More Sega Channel prototypes dumped. Even earlier ones.
#16
Posted 21 July 2011 - 07:54 PM
#17
Posted 22 July 2011 - 03:52 AM
GenesisFan64, on 21 July 2011 - 02:13 PM, said:
TomoAlien, on 21 July 2011 - 10:11 AM, said:
http://www.mediafire...a4bqif4k44hl8tv
This is a savestate from the original Sega Channel rom captured using Gens/GS with the palette lock activated, and opening it up in Gsavestate and changing the pallete (It's plain black, so you must change it or else you'll see nothing) leads to well, this:
-pic-
The Sega-Pat you see on the bottom is actually two scroll layers for each frame. Also, the palette I used here is just copypasted from Sonic 1 Title Screen, and is only used here to show you that correct graphics exist in the rom.
This is proof that the intro for Sega Channel is not absent. Maybe if I'll look around the rom with HivePal I might find the correct palette.
No one fixed the final Sega Channel ROM? because I did (just the intro sequence, of course)


Download
It doesn't work in Kega, use Regen or Gens
Odd. The intros are slightly different in Regen and Gens. In Regen, the Sega-Pat jumps onto the SEGA from top of the screen, but in Gens he shrinks into the screen, and the jingle gets cut off mid-way by the error.
#18
Posted 22 July 2011 - 05:01 AM
#19
Posted 22 July 2011 - 06:37 AM
two of the bootups for reference (Taken from the ol' "Sega Channel Memories" VHS recordings)
#20
Posted 22 July 2011 - 01:12 PM
Kiddo Cabbusses, on 22 July 2011 - 06:37 AM, said:
two of the bootups for reference (Taken from the ol' "Sega Channel Memories" VHS recordings)
Actually, the first one in the video doesn't appear at all. The second one appears in Gens, and the Regen one isn't here at all... odd.
Also for some reason I can't get either emulator to display different animations than the ones they always show. Trying to use savestates between the emulators results in crashes. Weird weird and weird.
Also ValleyBell, could you check the final Sega Channel rom for music with that magic thingy you call M1?
#21
Posted 22 July 2011 - 01:25 PM
TomoAlien, on 22 July 2011 - 01:12 PM, said:
Actually, the first one in the video doesn't appear at all. The second one appears in Gens, and the Regen one isn't here at all... odd.
Also for some reason I can't get either emulator to display different animations than the ones they always show. Trying to use savestates between the emulators results in crashes. Weird weird and weird.
Also ValleyBell, could you check the final Sega Channel rom for music with that magic thingy you call M1?
For reference, are we working with -both- US BIOs ROMs?
#23
Posted 22 July 2011 - 02:21 PM
DeanSatan, on 22 July 2011 - 02:02 PM, said:
Has this brought up anything new you could discuss with us?
Feels great to see you comment on the thread, BTW.
On that note, since I already mentioned this elsewhere, I guess I'll type out the one experience with the Sega Channel I had as a child.
I believe it was the 1995 (or 1996, but the former's more likely) Doylestown Arts Festival, strangely enough. The only store remotely connected to video games there is the Cyborg One comic book shop. But there, in the middle of the street, was a white cabinet - a Sega Channel Kiosk.
I specifically remember seeing the menus in the Toejam-and-Earl style and playing "The Punisher" on the thing (with a time-reset condition similar to most Kiosks), and thinking it was the coolest thing ever, but because at the time I didn't live in Doylestown at the time (I was in Philly), I couldn't subscribe. This experience probably impacted much of how my nerddom's developed up to this point.
I've been hoping that, someday, among the ROM dumps for Sega Channel circulating recently, will come the data that was in that Kiosk, complete with the ability to play various game demos.
(Totally forgot if I brought this up before here.)
#24
Posted 22 July 2011 - 02:39 PM
#26
Posted 22 July 2011 - 03:43 PM
Kiddo Cabbusses, on 22 July 2011 - 02:48 PM, said:
Jesus, that's on GoodGen level. Somebody should make an accurate ROM database for a change.
#27
Posted 22 July 2011 - 04:06 PM
ICEknight, on 22 July 2011 - 03:43 PM, said:
No-Intro normally has higher standards than that, honestly. I think part of the reason for the sloppy name is related to their internal confusion over whether they want to handle "network" content like Sega Channel and Satellaview.
(It also probably doesn't help that there wasn't a different demo up to this point - now... there are.)
#28
Posted 22 July 2011 - 11:07 PM
#29
Posted 22 July 2011 - 11:20 PM
********************************************************************************
* Project: Generations Lost *
* Module: vectors.s *
* Creation Date: July 1993 *
* Author: R. Frericks Jr. *
* Development System: Sierra Systems 68000 Macro Assembler 3.0 *
* *
* Copyright (c)1993 Tengen Inc., Pacific SoftScape Inc. *
********************************************************************************
nolist
include genesis.I
list
INITSTACK equ $ff8000 ; Inital system stack pointer
*
* First $100 bytes of the 68000 ROM space.
*
dc.l INITSTACK ; Reset: Initial stack pointer
dc.l ICD_BLK4 ; Reset: Initial program counter
dc.l _BusError ; Bus Error exception
dc.l _AddressError ; Addr Error execption
dc.l _StandardError ; Illegal Instruction execption
dc.l _StandardError ; Zero Divide execption
dcb.l 25-6+1,_StandardError ; Autovectors 6 through 25
dc.l _ExternalInt ; Level 2 Interrupt
dc.l _StandardError ; Level 3 Interrupt
dc.l _HorizontalInt ; Level 4 Interrupt
dc.l _StandardError ; Level 5 Interrupt
dc.l _VerticalInt ; Level 6 Interrupt
dc.l _StandardError ; Level 7 Interrupt
dc.l _NoVRAMerror ; Trap 0
dc.l _NoSATerror ; Trap 1
dc.l _NoObjectsError ; Trap 2
dcb.l 63-35+1,_StandardError ; Autovectors 35 through 63
.opt proc=68000 .file "..\c\header.c" .def BYTE\ .scl 13\ .type 0xc\ .endef .def WORD\ .scl 13\ .type 0xd\ .endef .def DWORD\ .scl 13\ .type 0xf\ .endef .def tagGENESIS_HEADER\ .scl 10\ .type 0x8\ .size 256\ .endef .def System\ .val 0\ .scl 8\ .type 0x32\ .line 23\ .size 16\ .dim 16\ .endef .def ReleaseYearMonth\ .val 16\ .scl 8\ .type 0x32\ .line 24\ .size 16\ .dim 16\ .endef .def GameNameDomestic\ .val 32\ .scl 8\ .type 0x32\ .line 25\ .size 48\ .dim 48\ .endef .def GameNameOverseas\ .val 80\ .scl 8\ .type 0x32\ .line 26\ .size 48\ .dim 48\ .endef .def ProductNumVersion\ .val 128\ .scl 8\ .type 0x32\ .line 27\ .size 14\ .dim 14\ .endef .def CheckSum\ .val 142\ .scl 8\ .type 0xd\ .endef .def IOusage\ .val 144\ .scl 8\ .type 0x32\ .line 29\ .size 16\ .dim 16\ .endef .def RomStart\ .val 160\ .scl 8\ .type 0xf\ .endef .def RomEnd\ .val 164\ .scl 8\ .type 0xf\ .endef .def RamStart\ .val 168\ .scl 8\ .type 0xf\ .endef .def RamEnd\ .val 172\ .scl 8\ .type 0xf\ .endef .def ExternalRam\ .val 176\ .scl 8\ .type 0x32\ .line 32\ .size 12\ .dim 12\ .endef .def ModemData\ .val 188\ .scl 8\ .type 0x32\ .line 33\ .size 12\ .dim 12\ .endef .def Memo\ .val 200\ .scl 8\ .type 0x32\ .line 34\ .size 40\ .dim 40\ .endef .def Country\ .val 240\ .scl 8\ .type 0x32\ .line 35\ .size 16\ .dim 16\ .endef .def .eos\ .val 256\ .scl 102\ .size 256\ .tag tagGENESIS_HEADER\ .endef .def GENESIS_HEADER\ .scl 13\ .type 0x8\ .size 256\ .tag tagGENESIS_HEADER\ .endef .def tagINIT_REGISTERS\ .scl 10\ .type 0x8\ .size 15\ .endef .def ModeSet1\ .val 0\ .scl 8\ .type 0xc\ .endef .def ModeSet2\ .val 1\ .scl 8\ .type 0xc\ .endef .def PatternBaseAddrA\ .val 2\ .scl 8\ .type 0xc\ .endef .def PatternBaseAddrW\ .val 3\ .scl 8\ .type 0xc\ .endef .def PatternBaseAddrB\ .val 4\ .scl 8\ .type 0xc\ .endef .def SatBaseAddr\ .val 5\ .scl 8\ .type 0xc\ .endef .def BkColor\ .val 6\ .scl 8\ .type 0xc\ .endef .def HInt\ .val 7\ .scl 8\ .type 0xc\ .endef .def ModeSet3\ .val 8\ .scl 8\ .type 0xc\ .endef .def ModeSet4\ .val 9\ .scl 8\ .type 0xc\ .endef .def HScrollAddr\ .val 10\ .scl 8\ .type 0xc\ .endef .def AutoIncrement\ .val 11\ .scl 8\ .type 0xc\ .endef .def ScrollSize\ .val 12\ .scl 8\ .type 0xc\ .endef .def WindowHpos\ .val 13\ .scl 8\ .type 0xc\ .endef .def WindowVpos\ .val 14\ .scl 8\ .type 0xc\ .endef .def .eos\ .val 15\ .scl 102\ .size 15\ .tag tagINIT_REGISTERS\ .endef .def INIT_REGISTERS\ .scl 13\ .type 0x8\ .size 15\ .tag tagINIT_REGISTERS\ .endef .text .align 2 .globl _header _header: .byte "SEGA GENESIS\0" .space 3 .byte "(C)T-XX 1994.JAN" .byte "Sega Channel \0" .space 31 .byte "Sega Channel \0" .space 31 .byte "GM T-000000 00" .word 0x0 .byte "J\0" .space 14 .long 0x0 .long 0xfffff .long 0xff0000 .long 0xffffff .byte "\0" .space 11 .byte "\0" .space 11 .byte "Developed by Pacific SoftScape Inc.\0" .space 4 .byte "JUE\0" .space 12 .def _header\ .val _header\ .scl 2\ .type 0x8\ .size 256\ .tag tagGENESIS_HEADER\ .endef
AboutBox:
Sierra Systems ASM68 3.00 globals.s 11/14/93 13:44 Page 1
1 T .opt proc=68000
2 T .file "..\c\globals.c"
3 T .def size_t\ .scl 13\ .type 0xf\ .endef
4 T .def va_list\ .scl 13\ .type 0x12\ .endef
5 T .def _iobuf\ .scl 10\ .type 0x8\ .size 28\ .endef
6 T .def ptr\ .val 0\ .scl 8\ .type 0x12\ .endef
7 T .def base\ .val 4\ .scl 8\ .type 0x12\ .endef
8 T .def cnt\ .val 8\ .scl 8\ .type 0x4\ .endef
9 T .def fd\ .val 12\ .scl 8\ .type 0x4\ .endef
10 T .def bufsize\ .val 16\ .scl 8\ .type 0x4\ .endef
11 T .def save_cnt\ .val 20\ .scl 8\ .type 0x4\ .endef
12 T .def flags\ .val 24\ .scl 8\ .type 0x3\ .endef
13 T .def ungch\ .val 26\ .scl 8\ .type 0x2\ .endef
14 T .def .eos\ .val 28\ .scl 102\ .size 28\ .tag _iobuf\ .endef
15 T .def FILE\ .scl 13\ .type 0x8\ .size 28\ .tag _iobuf\ .endef
16 T .def fpos_t\ .scl 13\ .type 0xf\ .endef
17 T .def BYTE\ .scl 13\ .type 0xc\ .endef
18 T .def WORD\ .scl 13\ .type 0xd\ .endef
19 T .def DWORD\ .scl 13\ .type 0xf\ .endef
20 T .def tagGENESIS_HEADER\ .scl 10\ .type 0x8\ .size 256\ .endef
21 T .def System\ .val 0\ .scl 8\ .type 0x32\ .line 23\ .size 16\ .dim 16\ .endef
22 T .def ReleaseYearMonth\ .val 16\ .scl 8\ .type 0x32\ .line 24\ .size 16\ .dim 16\ .endef
23 T .def GameNameDomestic\ .val 32\ .scl 8\ .type 0x32\ .line 25\ .size 48\ .dim 48\ .endef
24 T .def GameNameOverseas\ .val 80\ .scl 8\ .type 0x32\ .line 26\ .size 48\ .dim 48\ .endef
25 T .def ProductNumVersion\ .val 128\ .scl 8\ .type 0x32\ .line 27\ .size 14\ .dim 14\ .endef
26 T .def CheckSum\ .val 142\ .scl 8\ .type 0xd\ .endef
27 T .def IOusage\ .val 144\ .scl 8\ .type 0x32\ .line 29\ .size 16\ .dim 16\ .endef
28 T .def RomStart\ .val 160\ .scl 8\ .type 0xf\ .endef
29 T .def RomEnd\ .val 164\ .scl 8\ .type 0xf\ .endef
30 T .def RamStart\ .val 168\ .scl 8\ .type 0xf\ .endef
31 T .def RamEnd\ .val 172\ .scl 8\ .type 0xf\ .endef
32 T .def ExternalRam\ .val 176\ .scl 8\ .type 0x32\ .line 32\ .size 12\ .dim 12\ .endef
33 T .def ModemData\ .val 188\ .scl 8\ .type 0x32\ .line 33\ .size 12\ .dim 12\ .endef
34 T .def Memo\ .val 200\ .scl 8\ .type 0x32\ .line 34\ .size 40\ .dim 40\ .endef
35 T .def Country\ .val 240\ .scl 8\ .type 0x32\ .line 35\ .size 16\ .dim 16\ .endef
36 T .def .eos\ .val 256\ .scl 102\ .size 256\ .tag tagGENESIS_HEADER\ .endef
37 T .def GENESIS_HEADER\ .scl 13\ .type 0x8\ .size 256\ .tag tagGENESIS_HEADER\ .endef
38 T .def tagINIT_REGISTERS\ .scl 10\ .type 0x8\ .size 15\ .endef
39 T .def ModeSet1\ .val 0\ .scl 8\ .type 0xc\ .endef
40 T .def ModeSet2\ .val 1\ .scl 8\ .type 0xc\ .endef
41 T .def PatternBaseAddrA\ .val 2\ .scl 8\ .type 0xc\ .endef
42 T .def PatternBaseAddrW\ .val 3\ .scl 8\ .type 0xc\ .endef
43 T .def PatternBaseAddrB\ .val 4\ .scl 8\ .type 0xc\ .endef
44 T .def SatBaseAddr\ .val 5\ .scl 8\ .type 0xc\ .endef
45 T .def BkColor\ .val 6\ .scl 8\ .type 0xc\ .endef
46 T .def HInt\ .val 7\ .scl 8\ .type 0xc\ .endef
47 T .def ModeSet3\ .val 8\ .scl 8\ .type 0xc\ .endef
48 T .def ModeSet4\ .val 9\ .scl 8\ .type 0xc\ .endef
49 T .def HScrollAddr\ .val 10\ .scl 8\ .type 0xc\ .endef
50 T .def AutoIncrement\ .val 11\ .scl 8\ .type 0xc\ .endef
51 T .def ScrollSize\ .val 12\ .scl 8\ .type 0xc\ .endef
52 T .def WindowHpos\ .val 13\ .scl 8\ .type 0xc\ .endef
53 T .def WindowVpos\ .val 14\ .scl 8\ .type 0xc\ .endef
54 T .def .eos\ .val 15\ .scl 102\ .size 15\ .tag tagINIT_REGISTERS\ .endef
55 T .def INIT_REGISTERS\ .scl 13\ .type 0x8\ .size 15\ .tag tagINIT_REGISTERS\ .endef
56 T .def tagACTOR_DATA\ .scl 10\ .type 0x8\ .size 34\ .endef
57 T .def pCurrentFrame\ .val 0\ .scl 8\ .type 0x1d\ .endef
58 T .def pNextFrame\ .val 4\ .scl 8\ .type 0x1d\ .endef
59 T .def pRomData\ .val 8\ .scl 8\ .type 0x1d\ .endef
60 T .def Xpos\ .val 12\ .scl 8\ .type 0xd\ .endef
61 T .def Xfrac\ .val 14\ .scl 8\ .type 0xd\ .endef
Sierra Systems ASM68 3.00 globals.s 11/14/93 13:44 Page 2
SECTION: .text
62 T .def Ypos\ .val 16\ .scl 8\ .type 0xd\ .endef
63 T .def Yfrac\ .val 18\ .scl 8\ .type 0xd\ .endef
64 T .def X1\ .val 20\ .scl 8\ .type 0xd\ .endef
65 T .def Y1\ .val 22\ .scl 8\ .type 0xd\ .endef
66 T .def X2\ .val 24\ .scl 8\ .type 0xd\ .endef
67 T .def Y2\ .val 26\ .scl 8\ .type 0xd\ .endef
68 T .def Flags\ .val 28\ .scl 8\ .type 0xc\ .endef
69 T .def InternalFlags\ .val 29\ .scl 8\ .type 0xc\ .endef
70 T .def Blank\ .val 30\ .scl 8\ .type 0xc\ .endef
71 T .def FrameCounter\ .val 31\ .scl 8\ .type 0xc\ .endef
72 T .def SATindex\ .val 32\ .scl 8\ .type 0xc\ .endef
73 T .def NumSAT\ .val 33\ .scl 8\ .type 0xc\ .endef
74 T .def .eos\ .val 34\ .scl 102\ .size 34\ .tag tagACTOR_DATA\ .endef
75 T .def ACTOR_DATA\ .scl 13\ .type 0x8\ .size 34\ .tag tagACTOR_DATA\ .endef
76 T .def tagHERO\ .scl 10\ .type 0x8\ .size 98\ .endef
77 T .def actor\ .val 0\ .scl 8\ .type 0x8\ .size 34\ .tag tagACTOR_DATA\ .endef
78 T .def pRomData\ .val 34\ .scl 8\ .type 0x1d\ .endef
79 T .def MessageFunction\ .val 38\ .scl 8\ .type 0x90\ .endef
80 T .def Health\ .val 42\ .scl 8\ .type 0xd\ .endef
81 T .def StateFunction\ .val 44\ .scl 8\ .type 0x90\ .endef
82 T .def Xvel\ .val 48\ .scl 8\ .type 0xd\ .endef
83 T .def Xfrac\ .val 50\ .scl 8\ .type 0xd\ .endef
84 T .def Xaccel\ .val 52\ .scl 8\ .type 0xd\ .endef
85 T .def Xafrac\ .val 54\ .scl 8\ .type 0xd\ .endef
86 T .def Xmax\ .val 56\ .scl 8\ .type 0xd\ .endef
87 T .def Xmfrac\ .val 58\ .scl 8\ .type 0xd\ .endef
88 T .def Yvel\ .val 60\ .scl 8\ .type 0xd\ .endef
89 T .def Yfrac\ .val 62\ .scl 8\ .type 0xd\ .endef
90 T .def Yaccel\ .val 64\ .scl 8\ .type 0xd\ .endef
91 T .def Yafrac\ .val 66\ .scl 8\ .type 0xd\ .endef
92 T .def Ymax\ .val 68\ .scl 8\ .type 0xd\ .endef
93 T .def Ymfrac\ .val 70\ .scl 8\ .type 0xd\ .endef
94 T .def param0\ .val 72\ .scl 8\ .type 0xd\ .endef
95 T .def param1\ .val 74\ .scl 8\ .type 0xd\ .endef
96 T .def param2\ .val 76\ .scl 8\ .type 0xd\ .endef
97 T .def param3\ .val 78\ .scl 8\ .type 0xd\ .endef
98 T .def param4\ .val 80\ .scl 8\ .type 0xd\ .endef
99 T .def param5\ .val 82\ .scl 8\ .type 0xd\ .endef
100 T .def Flags1\ .val 84\ .scl 8\ .type 0xc\ .endef
101 T .def Flags2\ .val 85\ .scl 8\ .type 0xc\ .endef
102 T .def NextState\ .val 86\ .scl 8\ .type 0xd\ .endef
103 T .def CurrentState\ .val 88\ .scl 8\ .type 0xd\ .endef
104 T .def pStateInfo\ .val 90\ .scl 8\ .type 0x1d\ .endef
105 T .def pPlatform\ .val 94\ .scl 8\ .type 0x10\ .endef
106 T .def .eos\ .val 98\ .scl 102\ .size 98\ .tag tagHERO\ .endef
107 T .def HERO\ .scl 13\ .type 0x8\ .size 98\ .tag tagHERO\ .endef
108 T .def tagOBJECT\ .scl 10\ .type 0x8\ .size 102\ .endef
109 T .def actor\ .val 0\ .scl 8\ .type 0x8\ .size 34\ .tag tagACTOR_DATA\ .endef
110 T .def pRomData\ .val 34\ .scl 8\ .type 0x1d\ .endef
111 T .def MessageFunction\ .val 38\ .scl 8\ .type 0x90\ .endef
112 T .def Health\ .val 42\ .scl 8\ .type 0xd\ .endef
113 T .def StateFunction\ .val 44\ .scl 8\ .type 0x90\ .endef
114 T .def Xvel\ .val 48\ .scl 8\ .type 0xd\ .endef
115 T .def Xfrac\ .val 50\ .scl 8\ .type 0xd\ .endef
116 T .def Xaccel\ .val 52\ .scl 8\ .type 0xd\ .endef
117 T .def Xafrac\ .val 54\ .scl 8\ .type 0xd\ .endef
118 T .def Xmax\ .val 56\ .scl 8\ .type 0xd\ .endef
119 T .def Xmfrac\ .val 58\ .scl 8\ .type 0xd\ .endef
120 T .def Yvel\ .val 60\ .scl 8\ .type 0xd\ .endef
121 T .def Yfrac\ .val 62\ .scl 8\ .type 0xd\ .endef
Sierra Systems ASM68 3.00 globals.s 11/14/93 13:44 Page 3
SECTION: .text
122 T .def Yaccel\ .val 64\ .scl 8\ .type 0xd\ .endef
123 T .def Yafrac\ .val 66\ .scl 8\ .type 0xd\ .endef
124 T .def Ymax\ .val 68\ .scl 8\ .type 0xd\ .endef
125 T .def Ymfrac\ .val 70\ .scl 8\ .type 0xd\ .endef
126 T .def param0\ .val 72\ .scl 8\ .type 0xd\ .endef
127 T .def param1\ .val 74\ .scl 8\ .type 0xd\ .endef
128 T .def param2\ .val 76\ .scl 8\ .type 0xd\ .endef
129 T .def param3\ .val 78\ .scl 8\ .type 0xd\ .endef
130 T .def param4\ .val 80\ .scl 8\ .type 0xd\ .endef
131 T .def param5\ .val 82\ .scl 8\ .type 0xd\ .endef
132 T .def Flags1\ .val 84\ .scl 8\ .type 0xc\ .endef
133 T .def Flags2\ .val 85\ .scl 8\ .type 0xc\ .endef
134 T .def NextState\ .val 86\ .scl 8\ .type 0xd\ .endef
135 T .def CurrentState\ .val 88\ .scl 8\ .type 0xd\ .endef
136 T .def pStateInfo\ .val 90\ .scl 8\ .type 0x1d\ .endef
137 T .def pPlatform\ .val 94\ .scl 8\ .type 0x10\ .endef
138 T .def PrevObject\ .val 98\ .scl 8\ .type 0xd\ .endef
139 T .def NextObject\ .val 100\ .scl 8\ .type 0xd\ .endef
140 T .def .eos\ .val 102\ .scl 102\ .size 102\ .tag tagOBJECT\ .endef
141 T .def OBJECT\ .scl 13\ .type 0x8\ .size 102\ .tag tagOBJECT\ .endef
142 T .text
SECTION: .text
143 T .globl _ResetRegisters
144 T 00000000 _ResetRegisters:
145 T 00000000 06 .byte 0x6
146 T 00000001 64 .byte 0x64
147 T 00000002 30 .byte 0x30
148 T 00000003 30 .byte 0x30
149 T 00000004 07 .byte 0x7
150 T 00000005 5e .byte 0x5e
151 T 00000006 00 .byte 0x0
152 T 00000007 00 .byte 0x0
153 T 00000008 08 .byte 0x8
154 T 00000009 81 .byte 0x81
155 T 0000000a 00 .byte 0x0
156 T 0000000b 02 .byte 0x2
157 T 0000000c 11 .byte 0x11
158 T 0000000d 00 .byte 0x0
159 T 0000000e 00 .byte 0x0
160 T .def _ResetRegisters\ .val _ResetRegisters\ .scl 2\ .type 0x8\ .size 15\ .tag tagINIT_REGISTERS\ .endef
161 T 0000000f .align 2
162 T .globl _Stub
163 T .def _Stub\ .val _Stub\ .scl 2\ .type 0x20\ .endef
164 T 00000010 _Stub:
165 T 00000010 4e56 fffc link a6,#-4
166 T 00000014 .ln 1
167 T .def .bf\ .val .\ .scl 101\ .line 56\ .endef
168 T .def .ef\ .val .\ .scl 101\ .line 57\ .endef
169 T 00000014 .ln 2
170 T 00000014 4e5e unlk a6
171 T 00000016 4e75 rts
172 T .def _Stub\ .val .\ .scl -1\ .endef
173 T .def _Hero\ .val _Hero\ .scl 2\ .type 0x8\ .size 98\ .tag tagHERO\ .endef
174 T .comm _Hero,98,2
175 T .def _object\ .val _object\ .scl 2\ .type 0x38\ .line 62\ .size 5100\ .tag tagOBJECT\ .dim 50\ .endef
176 T .comm _object,5100,2
177 T .def _WorldXpos\ .val _WorldXpos\ .scl 2\ .type 0xf\ .endef
178 T .comm _WorldXpos,4,2
179 T .def _WorldYpos\ .val _WorldYpos\ .scl 2\ .type 0xf\ .endef
180 T .comm _WorldYpos,4,2
Sierra Systems ASM68 3.00 globals.s 11/14/93 13:44 Page 4
SECTION: .text
181 T .def _MinWorldX\ .val _MinWorldX\ .scl 2\ .type 0xd\ .endef
182 T .comm _MinWorldX,2,2
183 T .def _MaxWorldX\ .val _MaxWorldX\ .scl 2\ .type 0xd\ .endef
184 T .comm _MaxWorldX,2,2
185 T .def _MinWorldY\ .val _MinWorldY\ .scl 2\ .type 0xd\ .endef
186 T .comm _MinWorldY,2,2
187 T .def _MaxWorldY\ .val _MaxWorldY\ .scl 2\ .type 0xd\ .endef
188 T .comm _MaxWorldY,2,2
189 T .def _CurrentSequence\ .val _CurrentSequence\ .scl 2\ .type 0xd\ .endef
190 T .comm _CurrentSequence,2,2
191 T .def _pSubmenu\ .val _pSubmenu\ .scl 2\ .type 0x10\ .endef
192 T .comm _pSubmenu,4,2
193 T .def _GameFlags\ .val _GameFlags\ .scl 2\ .type 0xd\ .endef
194 T .comm _GameFlags,2,2
195 T .def _BackdropRate\ .val _BackdropRate\ .scl 2\ .type 0xc\ .endef
196 T .comm _BackdropRate,1,1
Total Errors: 0
Total Warnings: 0
SYMBOL TABLE
Value Section/Type Name
00000000 .text _ResetRegisters
00000010 .text _Stub
UNDEFINED _P
UNDEFINED _CurrentSequence
UNDEFINED _GameFlags
UNDEFINED _Hero
UNDEFINED _MaxWorldX
UNDEFINED _MaxWorldY
UNDEFINED _MinWorldX
UNDEFINED _MinWorldY
UNDEFINED _WorldXpos
UNDEFINED _WorldYpos
UNDEFINED _object
UNDEFINED _pSubmenu
e
00000000 .text _ResetRegisters
00000010 .text _Stub
UNDEFINED _
/****************************************************************************
* *
* Project: SEGA CHANNEL *
* *
* Module: GLOBALS.C *
* *
* Module Creation Date: October 1993 *
* *
* Author: J. Fort *
* *
* Development System: Sierra C 3.0 *
* *
* Copyright (c)1993 Pacific SoftScape Inc. *
* *
****************************************************************************/
#include <stdio.h>
#include "genesis.h"
#include "actor.h"
#include "objeng.h"
const INIT_REGISTERS ResetRegisters =
{
0x06, /* ModeSet1: disable H int, stop H&V ctrs */
0x64, /* ModeSet2: enable display, enable V int */
0x30, /* PatternBaseAddrA: @ $C000 */
0x30, /* PatternBaseAddrW: @ $C000 */
0x07, /* PatternBaseAddrB: @ $e000 */
0x5e, /* SatBaseAddr: @ $bc00 */
0x00, /* BkColor: color zero */
0x00, /* HInt: */
#ifdef _DEBUG
0x08, /* ModeSet3: enable ext int, full scroll */
#else
0x08, /* ModeSet3: full scroll */
#endif
0x81, /* ModeSet4: h 40 cell mode */
0x00, /* HScrollAddr: @ $0000 */
0x02, /* AutoIncrement: 2 */
0x11, /* ScrollSize: 64 x 64 maps */
0x00, /* WindowHpos: */
0x00, /* WindowVpos: */
};
/***************************************************************************
FUNCTION: Stub -- do nothing
DESCRIPTION: .
RETURNS: .
PARAMETERS: .
SIDE EFFECTS: .
REVISIONS: 10/93 -jf-
****************************************************************************/
void Stub(void)
{
}
HERO Hero;
OBJECT object[MAX_OBJECTS];
DWORD WorldXpos; /* 16:16 fixed point world position */
DWORD WorldYpos; /* 16:16 fixed point world position */
WORD MinWorldX,MaxWorldX; /* world X limits */
WORD MinWorldY,MaxWorldY; /* world Y limits */
WORD CurrentSequence; /* All purpose sequence counter */
void *pSubmenu; /* Pointer to submenu */
WORD GameFlags; /* Where ICON's get thier data from */
BYTE BackdropRate; /* Where we ALWAYS get our backdrop reload from */
* *
* Project: Genesis CORE CODE *
* *
* Module: STDOUT.S *
* *
* Module Creation Date: October 1993 *
* *
* Author: J. Fort *
* *
* Development System: SIERRA SYSTEMS 3.0 *
* *
* Copyright (c)1993 Pacific SoftScape Inc *
* *
*****************************************************************************
*
* Standard output and console routines. All output assumes MAPA and
* 64x64 maps. Very little error checking, call with good data.
* All positions are relative to the current window.
*
*
nolist
include genesis.I
include actor.I
include schannel.I
list
section .bss
** Current console I/O locations
Row ds.w 1
Col ds.w 1
MinRow ds.w 1
MinCol ds.w 1
MaxRow ds.w 1
MaxCol ds.w 1
xdef FontOffset
FontOffset ds.w 1 ; Character offset for font addr calculations
DmaCount ds.w 1
ScrollDMA ds.w 8 ; 10 bytes for DMA setup
ScrollDMA2 ds.w 8 ; Another 8 words
BottomVRAM ds.l 1 ; Command to set vram address
NumCol ds.w 1 ; # of columns
DMA_SRCLO EQU 7
DMA_SRCHI EQU 9
DMA_DEST EQU 12
tsection .text
xdef _SetFontPriPal,SetFontPriPal
****************************************************************************
* DESCRIPTION: Sets up priority and palette fields for all subsequent
* text output. Will be erased by a call to _SetupStdout
* Can also setup the font to be flipped if desired.
* RETURNS: .
* PARAMETERS: WORD - genesis format pri/pal data. Will be ADDED to the
* base font data. (D0 - SP+4)
* SIDE EFFECTS:
* REVISIONS: 10/93 -jf-
****************************************************************************
_SetFontPriPal:
move.w 4(sp),d0
SetFontPriPal:
and.w #$07FF,FontOffset
and.w #$F800,d0
or.w d0,FontOffset
rts
xdef SetTextPosition,_SetTextPosition
****************************************************************************
* DESCRIPTION: Sets up the console position for all subsequent writes
* RETURNS: .
* PARAMETERS: SHORT xposition D0 SP+4
* SHORT yposition D1 SP+6
* SIDE EFFECTS:
* REVISIONS: 10/93 -jf-
****************************************************************************
_SetTextPosition:
move.w 4(sp),d0
move.w 6(sp),d1
SetTextPosition:
add.w MinRow,d1
cmp.w MaxRow,d1 ;
JBE.s STP_1
move.w MinRow,d1 ; We're too big...
STP_1:
move.w d1,Row
add.w MinCol,d0 ; Offset for minimuims
cmp.w MaxCol,d0
JBE.s STP_2
move.w MinCol,d0
STP_2
move.w D0,Col
rts
xdef _SetTextWindow
****************************************************************************
* DESCRIPTION: Sets up the extents of the text window for the STDOUT
* functions. Also resets the origin of the window to 0,0
* Sets up the DMA's for the scroll
* RETURNS: .
* PARAMETERS: WORD UpperLeft X SP+4
* WORD UpperLeft Y SP+6
* WORD LowerRight X SP+8
* WORD LowerRight Y SP+10
* OR PASS A POINTER TO AN ARRAY LIKE ABOVE TO SetTextWindow
* SIDE EFFECTS:
* REVISIONS: 10/93 -jf-
****************************************************************************
_SetTextWindow
lea 4(sp),a0
SetTextWindow:
move.w (a0)+,d0
move.w d0,Col
move.w d0,MinCol ; D0 = MIN COL
move.w (a0),Row
move.w (a0)+,MinRow
move.w (a0)+,d1 ; D1 = MAX COL
move.w d1,MaxCol
move.w (a0),MaxRow
lea ScrollDMA,a1
SetVDPreg 1,$74,(a1)+ ; set up DMA enable
sub.w d0,d1 ; # of columns
move.w d1,NumCol ; Remember it
lsl.w #1,d1 ; #2 = # of bytes
CalcVDPreg 19,d1
move.w d1,(a1)+ ; set length low based on D1
SetVDPreg 20,0,(a1)+ ; set length high
move.w Row,d1
lsl.w #6,d1 ; (Row*64+Col)*2
add.w Col,d1 ;
lsl.w #1,d1 ;
add.w #MAPA_VRAM,d1 ; D1 is now top-left VRAM address
PUSH.w d1 ; Save it
move.w d1,d0
add.w #128,d0 ; Next row down - source addr
move.w d0,d2
CalcVDPreg 21,d2
move.w d2,(a1)+ ; Low Source Address
lsr.w #8,d0
CalcVDPreg 22,d0
move.w d0,(a1)+ ; High Source Address
SetVDPreg 23,$C0,(a1)+ ; Really high addr - set to C0
move.w d1,d0 ; Dest Addr
and.w #$3FFF,d0
move.w d0,(a1)+ ; Source Addr 1
rol.w #2,d1
and.w #$0003,d1
or.w #$00C0,d1
move.w d1,(a1) ; DMA SETUP!
move.w MaxRow,d0
sub.w MinRow,d0
DEC.w d0
move.w d0,DmaCount ; # of rows to DMA
*
*
*
INC.w d0
lsl.w #7,d0 ; # of rows * 128
add.w (sp)+,d0 ; And add in VRAM address of top-left
CalcVRAMaddr d0,d1 ; Calculate it
move.l d1,BottomVRAM
rts
xdef OutMultiText
****************************************************************************
* DESCRIPTION: Outputs multiple text strings to multiple positios -- this
* is a list of OutText format strings. Terminate this list with
* an additional 0
* RETURNS: .
* PARAMETERS: A0 - pointer to a list of many strings
* SIDE EFFECTS:
* REVISIONS: 10/93 -jf-
****************************************************************************
OutMultiText:
bsr.s OutPosText ; Display one string
tst.b (a0)
bne.s OutMultiText ; Keep outputing
rts
xdef OutPosText,_OutPosText
xdef OutText,_OutText
****************************************************************************
* DESCRIPTION: Displays text at a specific point on the screen -- This
* point is indicated by 2 position BYTES immediately before
* the string's text. OutText is the same, but the position is
* whatever is current
* RETURNS: A0 - pointing after the Null Terminator
* PARAMETERS: poitnter to a structure, X pos byte, A0 SP+4
* Y pos byte, null-terminated string.
* SIDE EFFECTS:
* REVISIONS: 10/93 -jf-
****************************************************************************
_OutText: move.l 4(sp),a0
bra.s OutText
_OutPosText:
move.l 4(sp),a0
OutPosText:
PUSH.l A3
move.l a0,a3
clr.w d0
clr.w d1
move.b (a3)+,d0 ; Xpos
move.b (a3)+,d1 ; Ypos!
bsr SetTextPosition ; Set new position
bra.s OT_1
OutText:
PUSH.l a3
move.l a0,a3
OT_1:
clr.w d0
move.b (a3)+,d0
beq.s OT_2
bsr putchx ; Display this character
bra.s OT_1
OT_2:
move.l a3,a0
POP.l a3
rts ; Done!
xdef OutHexText
****************************************************************************
* DESCRIPTION: Displays a hex WORD value as ASCII text -- This is simpler
* than calling PRINTF for simple hex words
* RETURNS: .
* PARAMETERS: D0 - WORD to display
* SIDE EFFECTS:
* REVISIONS: 11/93 -jf-
****************************************************************************
OutHexText:
PUSH.W d4
PUSH.W d3
move.w d0,d4
move.w #4-1,d3
OHT_1
rol.w #4,d4
move.w d4,d0
and.w #$000F,d0
move.b HEXASCII(pc,d0),d0
bsr.s putchx
dbra d3,OHT_1
POP.W d3
POP.W D4
rts
HEXASCII dc.b '0123456789ABCDEF'
xdef OutDecText
****************************************************************************
* DESCRIPTION: Displays a decimal WORD value as ASCII text -- This is simpler
* than calling PRINTF for simple decimal values
* RETURNS: .
* PARAMETERS: D0 - WORD to display
* SIDE EFFECTS:
* REVISIONS: 11/93 -jf-
****************************************************************************
OutDecText:
PUSHM.l d3-d4/a2
clr.l d3
clr.w d4 ; flag
move.w d0,d3
lea DIVTABLE(pc),a2
ODT_1
move.w (a2)+,d1
beq.s ODT_X ; Done, leave
divu.w d1,d3 ; Divide d3 by d0
move.w d3,d1 ; quotient
move.b HEXASCII(pc,d1),d0
tst.b d1
bne.s ODT_3
tst.b d4
bne.s ODT_4 ; Need terminating zeros
move.w #' ',d0 ; Spaces if not
bra.s ODT_4
ODT_3
st.b d4
ODT_4
bsr.s putchx ; Display quotient
clr.w d3
swap.w d3 ; And put remainder into d3
bra ODT_1
ODT_X:
POPM.l d3-d4/a2
rts
DIVTABLE dc.w 10000,1000,100,10,1,0
xdef _putchx
xdef putchx
********************************************************************************
* DESCRIPTION: Stdout putch function for printf, etc. Puts the char to the
* Genesis Map A, 40 column mode.
* Translates a LF to CR-LF
* PARAMETERS: int c - The character to put out. (D0, SP+4)
* this is an INT -- so it's 32 bits long
* RETURN VALUE: void
* COMMENTS:
* REVISIONS: 9/93 -rf-
* 10/93 -jf- Updated
********************************************************************************
_putchx:
move.w 6(sp),d0 ; Word optimized call
putchx:
cmp.b #10,d0 ; LF?
bne.s PC_0 ; no, goto pc_0
add.w #1,Row ; if LF, Row++
bra.s PC_A ; do a CR too!
PC_0:
cmp.b #13,d0
bne.s PC_1 ; CR? no- goto PC_1
PC_A:
move.w MinCol,Col ; if CR - Col=MinCol
bra.s PC_X
PC_1:
move.w Row,d1
lsl.w #6,d1 ; (Row*64+Col)*2
add.w Col,d1 ;
lsl.w #1,d1 ;
add.w #MAPA_VRAM,d1 ;
CalcVRAMaddr d1,d2 ;
move.l d2,VCTRL ; Setup MAP VRAM address
lea Ascii2Font-$20(pc),a0 ; Compensate for table beginning at space too
move.b (a0,d0),d0 ; Get char #
add.w FontOffset,d0 ; Add in font offset
move.w d0,VDATA ; und write to video
INC.w Col
*
* Simple wrap-around on the X -- but we scroll for the Y
*
PC_X:
move.w Col,d0
cmp.w MaxCol,d0
JBE.s PC_X1 ; if (Col > MaxCol)
move.w MinCol,Col ; Col=MinCol
INC.w Row
PC_X1:
move.w Row,d0
cmp.w MaxRow,d0
JBE.s PC_X2
*
* We want to scroll here! -- First, copy over the DMA command so we can mod it
*
lea ScrollDMA,a0
lea ScrollDMA2,a1
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0)+,(a1)+
move.l (a0),(a1) ; copied
lea VCTRL,a0
SetAutoInc 1,(a0)
move.l #ScrollDMA2,d2 ; Source
move.l d2,a1 ; Load A1
move.w DmaCount,d0 ; Count
PC_XA:
move.l (a1)+,(a0)
move.l (a1)+,(a0)
move.l (a1)+,(a0)
move.l (a1),(a0) ; Do a DMA
move.l d2,a1 ; Reload pointer
add.w #128,DMA_DEST(a1)
add.b #128,DMA_SRCLO(a1)
bcc.s PC_XB
INC.b DMA_SRCHI(a1)
PC_XB:
move.w (a0),d1
btst.l #1,d1
bne.s PC_XB ; Wait for DMA
dbra d0,PC_XA
*
* Done -- Gotta clear bottom line, we'll use the DMA that's already set up
*
SetVDPreg 1,$64,(a0)
SetAutoInc 2,(a0)
move.w NumCol,d0
move.w FontOffset,d1
and.w #$07FF,d1 ; All clears on P0!
move.l BottomVRAM,(a0)
sub.w #4,a0
PC_XC:
move.w d1,(a0)
dbra d0,PC_XC
DEC.w Row ; Correct for being one past
PC_X2:
rts
xdef _SetupStdout
********************************************************************************
* DESCRIPTION: Sets up the video for text output. Loads the font into VRAM
* and resets the console parameters. The map will go into
* MAPA
* PARAMETERS:
*
* RETURN VALUE: .
* COMMENTS: .
* REVISIONS: 10/93 -jf-
**********************
#30
Posted 22 July 2011 - 11:34 PM
Andlabs, on 22 July 2011 - 11:07 PM, said:
Tough question. I myself made the filename match the Cartridge "art" to the best of my ability, and wrote every detail (including the date written on the cart). Yes, the date was the same as the Demo #6 cart.
I'm kinda I kept a picture of the demo 4 cart, though - I was sloppy in saving stuff and didn't have that in a space where I'd end up reobtaining it easily. Basically, though, the cartridge description's the most accurate thing we got for it.

00