Skip to content

Commit 3c54452

Browse files
author
zengfr
committed
add update
1 parent 9c76ffa commit 3c54452

File tree

468 files changed

+459292
-617
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

468 files changed

+459292
-617
lines changed
Loading

Android/Smali学习笔记.pdf

819 KB
Binary file not shown.

Android/Smali开发详解.pdf

3.43 MB
Binary file not shown.
341 KB
Loading

Android/debugging_dalvik.pdf

218 KB
Binary file not shown.

CPS1/CPS1.NET_source.zip

447 KB
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
https://github.com/zengfr/romhack
2+
https://gitee.com/zengfr/romhack
3+
Conversion SF2' to Carrier Air Wing (CPS1)
4+
Originally the World version of Carrier Air Wing runs on a 89624B-3 B-board and 88622-C-5 C-board.
5+
6+
To use a different B-board, files need to be rearranged (merged, interleaved, ect.) and one of the B-board PALs (CA24B for Carrier Air Wing) must be adapated (handcrafted). This will not be covered by this article as I want to keep it at a reasonnable size (and prevent readers to fall asleep).
7+
8+
To use a different C-board, program ROMs must be modified to use different registers addresses and different layer masks.
9+
I will try to give some useful information on how to proceed.
10+
11+
1) Modifying MAME source and recompiling
12+
13+
Carrier Air Wing originally uses a CPS-B-16 chip on the C-board while SF2' uses a CPS-B-21 chip with no battery.
14+
Everything is detailed in MAME:
15+
Carrier Air Wing (World 901009) 1990 89624B-3 CA24B IOB1 88622-C-5 CPS-B-16 DL-0411-10011 None
16+
Street Fighter II': Champion Edition (World 920313) 1992 91635B-2 S9263B BPRG1 IOB1 92631C-6 CPS-B-21 DL-0921-10014 C632 IOC1
17+
In order to test my work in MAME I've modified the file cps1.cpp located in mame\src\mame\video
18+
I've edited the following line:
19+
{"cawing", CPS_B_16, mapper_CA24B },
20+
To:
21+
{"cawing", CPS_B_21_DEF, mapper_CA24B },
22+
This will force MAME to use the CPS-B-21 chip (no battery hence CPS_B_21_DEF in the line above) instead of CPS-B-16.
23+
24+
To recompile MAME you can follow the instructions on MAME's official website:
25+
http://mamedev.org/tools/
26+
27+
2) Editing registers addresses
28+
29+
Again the needed information can be found in the cps1.cpp file mentionned earlier:
30+
/* CPSB ID multiply protection unknown ctrl priority masks palctrl layer enable masks */
31+
#define CPS_B_16 0x00,0x0406, __not_applicable__, 0x0c,{0x0a,0x08,0x06,0x04},0x02, {0x10,0x0a,0x0a,0x00,0x00}
32+
#define CPS_B_21_DEF 0x32, -1, 0x00,0x02,0x04,0x06, 0x08, -1, -1, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30}
33+
The base address for registers is always 0x800140 for all CPS1 games.
34+
35+
So we can calculate the different adresses for a CPS-B16 chip (Carrier Air Wing):
36+
Layer control = 0x800140 + 0x0C = 0x80014C
37+
Priority mask 1 = 0X800140 + 0x0a = 0x80014A
38+
Priority mask 2 = 0X800140 + 0x08 = 0x800148
39+
Priority mask 3 = 0X800140 + 0x06 = 0x800146
40+
Priority mask 4 = 0X800140 + 0x04 = 0x800144
41+
Palette control = 0X800140 + 0x02 = 0x800142
42+
43+
And the same for a CPS-B-21 chip with no battery (SF2'):
44+
Layer control = 0x800140 + 0x26 = 0x800166
45+
Priority mask 1 = 0X800140 + 0x28 = 0x800168
46+
Priority mask 2 = 0X800140 + 0x2A = 0x80016A
47+
Priority mask 3 = 0X800140 + 0x2C = 0x80016C
48+
Priority mask 4 = 0X800140 + 0x2E = 0x80016E
49+
Palette control = 0X800140 + 0x30 = 0x800170
50+
51+
Now in the program ROMs of Carrier Air Wing we will replace address 0x80014A by 0x800166 (layer control). And so on for the priority masks and palette control.
52+
53+
But that's not all, base register 0x800140 is used to read the CPS-B chip ID, which is 0x0406 for a CPS-B-16 and -1 (0xFFFF) for a CPS-B-21.
54+
Carrier Air Wing does read it several times and in different ways (sometimes as a word from 0x800140, sometimes as a byte from 0x800141 etc.).
55+
So each time the game tries to read the ID we will have to make it to believe the chips is a CPS-B-16.
56+
For instance
57+
move.w $800140.l, D0
58+
will have to be replaced by
59+
move.w #$406, D0 (followed by a NOP instruction as it needs only 4 bytes instead of 6).
60+
For a byte
61+
move.b $800140.l, D0
62+
can be replaced by
63+
move.b #$4, D0 (first byte of 0x0406)
64+
and
65+
move.b $800141.l, D0
66+
can be replaced by
67+
move.b #$6, D0 (second byte of 0x0406).
68+
69+
Once done game should boot in MAME but with the wrong layers enabled (as expected).
70+
71+
3) Editing layer masks
72+
73+
An other particularity of CPS-B chips is they used different values to enable layers.
74+
Back to the MAME's source:
75+
/* CPSB ID multiply protection unknown ctrl priority masks palctrl layer enable masks */
76+
#define CPS_B_16 0x00,0x0406, __not_applicable__, 0x0c,{0x0a,0x08,0x06,0x04},0x02, {0x10,0x0a,0x0a,0x00,0x00}
77+
#define CPS_B_21_DEF 0x32, -1, 0x00,0x02,0x04,0x06, 0x08, -1, -1, 0x26,{0x28,0x2a,0x2c,0x2e},0x30, {0x02,0x04,0x08,0x30,0x30}
78+
So for a CPS-B-16 offsets are:
79+
Layer 1 enable = 0x10
80+
Layer 2 enable = 0x0A
81+
Layer 3 enable = 0x0A
82+
Layer 4 enable = 0x00
83+
Layer 5 enable = 0x00
84+
When 2 layers share the same offset it means they are simulteneously activated.
85+
Here we can see layers 2 and 3 are activated together, so as layers 4 and 5.
86+
87+
For a CPS-B-21 offsets are:
88+
Layer 1 enable = 0x02
89+
Layer 2 enable = 0x04
90+
Layer 3 enable = 0x08
91+
Layer 4 enable = 0x30
92+
Layer 5 enable = 0x30
93+
94+
To enable/disable layers, game must write to the layer control register. As seen before this is address 0x80014C for a CPS-B-16 and 0x800166 for a CPS-B-21.
95+
The value must contain a base offset of 0x12C0 (identical for all CPS1 games) then add the desired values.
96+
Example:
97+
to activate only layer 1 with a CPS-B-21 chip, game must write 0x12C0 + 0x02 = 0x12C2 to the register 0x800166.
98+
99+
Using MAME dissasembler with the modified program ROMs I've found Carrier Air Wing accesses the layer control register either directly:
100+
000482: 33FC 12D0 0080 0166 move.w #$12d0, $800166.l
101+
Or indirectly:
102+
001CDE: 33ED 004A 0080 0166 move.w ($4a,A5), $800166.l
103+
104+
For the direct access it's quite simple: 0x12D0 for a CPS-B-16 chip corresponds to 0x12FE for a CPS-B-21 chip, so the line
105+
000482: 33FC 12D0 0080 0166 move.w #$12d0, $800166.l
106+
Is replaced by
107+
000482: 33FC 12FE 0080 0166 move.w #$12FE, $800166.l
108+
109+
For the indirect access I had to set breakpoints and found the mask value is written to RAM @ 0xFF804A before being written to the layer control register.
110+
So I searched for all the writes to 0xFF804A and modified the values being written according to the different offsets.
111+
Example:
112+
000606: 3B7C 12DA 004A move.w #$12da, ($4a,A5)
113+
is replaced by
114+
000606: 3B7C 12FE 004A move.w #$12FE, ($4a,A5)
115+
116+
Here are the different values I've found being used and their equivalent for the CPS-B-21 chip:
117+
CPS-B-16 CPS-B-21
118+
0x12DA 0x12FE
119+
0x139A 0x13BE
120+
0x06DA 0x06FE
121+
0x24DA 0x24FE
122+
0x18DA 0x18FE
123+
0x079A 0x07BE
124+
125+
Then I ran the game but found 2 problems:
126+
- incorrect layers enabled during attract
127+
- missing Game Over text (again incorrect layers enabled)
128+
129+
By watching the RAM I could see the wrong value written to RAM @ 0xFF804A during attract was 0x12DA so I set a conditionnal breakpoint in the MAME debugger:
130+
wpset FF804A,1,w,wpdata==12DA
131+
This informed me the game sometimes uses the layer control offset as a mask:
132+
000F3C: 006D 001A 004A ori.w #$1a, ($4a,A5)
133+
Here the value used is 0x1A (all layers enabled for a CPS-B-16) which corresponds the 0x3E for a CPS-B-21 chip.
134+
I replaced the line as follow
135+
ori.w #$3E, ($4a,A5)
136+
and now attract was correct.
137+
I followed the same procedure for the missing Game Over text (value 0x12D0 written).
138+
This time value 0x10 was used (layers 1, 4 and 5):
139+
001234: 006D 0010 004A ori.w #$10, ($4a,A5)
140+
Which I replaced by
141+
ori.w #$32, ($4a,A5)
142+
And game was finally working perfectly!
143+
144+
4) Material needed
145+
146+
4.1) If you use a 91634B-2 B-board (EPROM)
147+
- 6 * 27C4096 ROM (4 for the graphics and 2 for the program)
148+
- 2 * 27C010 ROM (audio)
149+
- 1 * 27C512 ROM (audio)
150+
- 1 * GAL16V8 (PAL)
151+
152+
4.2) If you use a 91635B-2 B-board (mask ROM)
153+
- 4 * 27C400 ROM (graphics)
154+
- 2 * 27C4096 ROM (program)
155+
- 2 * 27C010 ROM (audio)
156+
- 1 * 27C512 ROM (audio)
157+
- 1 * GAL16V8 (PAL)
158+
159+
5) ROMs and PAL burning
160+
161+
Now it's time to burn the files on the appropriated devices.
162+
163+
5.1) If you use a 91634B-2 B-board (EPROM)
164+
- ROMs 01/02/03/04/22/23 => 27C4096
165+
- ROM 09 => 27C512
166+
- ROM 18/19 => 27C010
167+
- CAW_PAL_1A => GAL16V8
168+
169+
5.2) If you use a 91635B-2 B-board (mask ROM)
170+
- ROMs 01/02/03/04 => 27C400
171+
- ROMs 22/23 => 27C4096
172+
- ROM 09 => 27C512
173+
- ROM 18/19 => 27C010
174+
- CAW_PAL_1A => GAL16V8
175+
176+
6) ROMs installation
177+
178+
All SF2' ROMs must be removed from the B-board.
179+
The PAL named S963B at position 1A has to be removed too.
180+
Double check you've put the devices the right way (the silkscreen should help you)!
181+
182+
6.1) If you use a 91634B-2 B-board (EPROM)
183+
- Install the ROMs in the corresponding socket (ROM 01 in socket 01, etc.)
184+
- Install the GAL16V8 in position 1A (where the S963B was)
185+
186+
6.2) If you use a 91635B-2 B-board (mask ROM)
187+
- Install the ROMs 01/04/18/19/22/23 in the corresponding socket (ROM 01 in socket 01, etc.)
188+
- Install ROM 02 in socket 03
189+
- Install ROM 03 in socket 02
190+
- Install the GAL16V8 in position 1A (where the S963B was)
191+
192+
7) Test
193+
https://github.com/zengfr/romhack
194+
https://gitee.com/zengfr/romhack

CPS1/Genesis Mega drive 68k map.asm

+63
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
; ====================================================================
2+
; ----------------------------------------------------------------
3+
; Genesis / Mega drive 68k map
4+
; ----------------------------------------------------------------
5+
6+
sys_exram equ $200000 ; External RAM
7+
z80_cpu equ $A00000 ; Z80 CPU RAM, size: $2000
8+
ym_ctrl_1 equ $A04000 ; YM2612 Reg 1, channels 1-3
9+
ym_data_1 equ $A04001 ; YM2612 Reg 2
10+
ym_ctrl_2 equ $A04002 ; YM2612 Reg 1, channels 4-6
11+
ym_data_2 equ $A04003 ; YM2612 Reg 2
12+
sys_io equ $A10001 ; bits: OVRSEAS(7)|PAL(6)|DISK(5)|VER(3-0)
13+
sys_data_1 equ $A10003 ; Port 1 DATA
14+
sys_data_2 equ $A10005 ; Port 2 DATA
15+
sys_data_3 equ $A10007 ; Modem DATA
16+
sys_ctrl_1 equ $A10009 ; Port 1 CTRL
17+
sys_ctrl_2 equ $A1000B ; Port 2 CTRL
18+
sys_ctrl_3 equ $A1000D ; Modem CTRL
19+
sys_tmss equ $A14000 ; Write "SEGA" here if ver > 0
20+
z80_bus equ $A11100 ; Only use bit 0 (bit 8 as WORD)
21+
z80_reset equ $A11200 ; WRITE only ($0000 reset/$0100 cancel)
22+
md_mars_id equ $A130EC ; MARS ID "MARS"
23+
md_bank_sram equ $A130F1 ; Make SRAM visible at $200000
24+
vdp_data equ $C00000 ; Video data port (mirror: $C00002)
25+
vdp_ctrl equ $C00004 ; Video control port (mirror: $C00006)
26+
psg_ctrl equ $C00011 ; PSG Sound port
27+
28+
; ----------------------------------------------------------------
29+
; Genesis / Mega drive Z80 map
30+
; ----------------------------------------------------------------
31+
32+
zym_ctrl_1 equ $4000 ; YM2612 reg 1
33+
zym_data_1 equ $4001 ; YM2612 reg 2
34+
zym_ctrl_2 equ $4002 ; YM2612 reg 1
35+
zym_data_2 equ $4003 ; YM2612 reg 2
36+
zbank equ $6000 ; ROM BANK 24bits %XXXXXXXX X0000000 00000000
37+
zvdp_data equ $7F00 ; Video data port
38+
zvdp_ctrl equ $7F04 ; Video control port
39+
zpsg_ctrl equ $7F11 ; PSG control
40+
41+
; ----------------------------------------------------------------
42+
; If a SEGA CD is attached
43+
; ----------------------------------------------------------------
44+
45+
syscd_prgram equ $020000 ; SubCPU PRG-RAM, up to $1FFFF, banked
46+
syscd_wordram equ $200000 ; WORD-RAM seen in MAIN-CPU
47+
syscd_bus equ $A12000 ; WORD | Sub-CPU BUS/RESET
48+
syscd_memory equ $A12003 ; BYTE | Sub-CPU memory mode
49+
syscd_cdcmode equ $A12004 ; WORD | CDC Mode
50+
syscd_hint equ $A12006 ; WORD | VDP HBlank jump ($FFxxxx)
51+
syscd_cdchost equ $A12008 ; WORD | CDC Host
52+
syscd_stopwtch equ $A12008 ; WORD | Stopwatch
53+
syscd_comm_m equ $A1200E ; BYTE | MainCPU R/W comm byte
54+
syscd_comm_s equ $A1200F ; BYTE | Sub-CPU Read comm byte
55+
syscd_args_m equ $A12010 ; DATA | Comm R/W list, max size: $E
56+
syscd_args_s equ $A12020 ; DATA | Comm Read list, max size: $E
57+
58+
; ----------------------------------------------------------------
59+
; If a 32X is attached
60+
; ----------------------------------------------------------------
61+
62+
sysmars_ID equ $A130EC ; MARS ID "MARS"
63+
sysmars_reg equ $A15100 ; MARS 32X buffer (check for mars_ID first)

CPS1/YM2610 decode3.txt

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
SSG registers decode
2+
3+
AB CD EF GH IJ KL
4+
x x x x x xx -> 00111 Channel enable flags
5+
x x x x x xx -> 01000 Volume A
6+
x x x x x xx -> 01001 Volume B
7+
x x x x x xx -> 01010 Volume C
8+
x x x x x xx -> 01101 Envelope shape
9+
10+
AB CD EF GH IJ K
11+
x x x x x x -> 01100 Coarse envelope
12+
x x x x x x -> 00000 Fine tune A
13+
x x x x x x -> 00010 Fine tune B
14+
x x x x x x -> 00100 Fine tune C
15+
x x x x x x -> 00101 Coarse tune C
16+
x x x x x x -> 00011 Coarse tune B
17+
x x x x x x -> 00001 Coarse tune A
18+
x x x x x x -> 01011 Fine envelope
19+
20+
x x x x x x -> 00110 Noise tune

CPS1/Z80 Sound Commands.txt

+91
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
https://github.com/zengfr/romhack
2+
https://gitee.com/zengfr/romhack
3+
Z80 Sound Commands
4+
5+
The Z80 can recieve single byte commands from the 68000 to the Z80, it can also return a single byte
6+
Command Meaning
7+
$00 nop/do nothing
8+
$01 Slot switch (needed by bios)
9+
$02 Play eyecatch music (needed by bios)
10+
$03 Soft Reset (needed by bios)
11+
$04 Disable All (Music & Sounds)
12+
$05 Disable Music
13+
$06 Disable Sounds
14+
$07 Enable All (Music & Sounds)
15+
$08 Enable Music
16+
$09 Enable Sounds
17+
$0A Silence SSG channels
18+
$0B Silence FM channels
19+
$0C Stop all ADPCM-A samples
20+
$0D Stop current ADPCM-B sample
21+
$0E Tempo Change (1 argument; new tempo)
22+
$0F unused
23+
$10 Fade Out (1 argument; fade speed)
24+
$11 Stop Fade In/Out
25+
$12 Fade In (1 argument; fade speed)
26+
$13-$1F Unused
27+
$20-FF Free for user use
28+
----------------------------------------------------------------------------------
29+
map(0x800180, 0x800187).w(FUNC(cps_state::cps1_soundlatch_w)); /* Sound command */
30+
map(0x800188, 0x80018f).w(FUNC(cps_state::cps1_soundlatch2_w)); /* Sound timer fade */
31+
map(0xf18000, 0xf19fff).rw(FUNC(cps_state::qsound_sharedram1_r), FUNC(cps_state::qsound_sharedram1_w)); /* Q RAM */
32+
map(0xf1e000, 0xf1ffff).rw(FUNC(cps_state::qsound_sharedram2_r), FUNC(cps_state::qsound_sharedram2_w)); /* Q RAM */
33+
$800180 $800181 Sound command
34+
$800188 $800189 Sound fade
35+
$f18000 $f19fff QSound RAM
36+
----------------------------------------------------------------------------------
37+
Improved CPS1 mute codes
38+
39+
bp 00C0,audiocpu.rb@D7E1>0,{pc=006A;g}
40+
bp 025A,1,{pc=030F;g}
41+
42+
<cheat desc="No Background Music">
43+
<script state="on">
44+
<action>temp0=audiocpu.rd@00AA</action>
45+
<action>temp1=audiocpu.rd@025A</action>
46+
</script>
47+
<script state="run">
48+
<action condition="audiocpu.rb@D048 gt 0">audiocpu.od@00AA=00006AC3</action>
49+
<action condition="audiocpu.rb@D048 eq 0">audiocpu.od@00AA=temp0</action>
50+
<action>audiocpu.od@025A=00030FC3</action>
51+
</script>
52+
<script state="off">
53+
<action>audiocpu.od@00AA=temp0</action>
54+
<action>audiocpu.od@025A=temp1</action>
55+
</script>
56+
</cheat>
57+
--------------------------------------------------------------------------------------
58+
<cheat desc="No Background Music">
59+
<script state="run">
60+
<action>audiocpu.pw@D048=0000</action>
61+
<action>audiocpu.pq@D300=00, audiocpu.pq@D310=00, audiocpu.pq@D320=00, audiocpu.pq@D330=00, audiocpu.pq@D340=00, audiocpu.pq@D350=00, audiocpu.pq@D360=00, audiocpu.pq@D370=00</action>
62+
<action>audiocpu.pq@D380=00, audiocpu.pq@D390=00, audiocpu.pq@D3A0=00, audiocpu.pq@D3B0=00, audiocpu.pq@D3C0=00, audiocpu.pq@D3D0=00, audiocpu.pq@D3E0=00, audiocpu.pq@D3F0=00</action>
63+
</script>
64+
</cheat>
65+
66+
cheat "BGM"
67+
default 1
68+
0 "BGM default"
69+
1 "BGM off", 1, 0xD048, 0x00,1, 0xD049, 0x00
70+
71+
cheat "D300"
72+
default 1
73+
0 "default"
74+
1 "1st note off", 1, 0xD300, 0x00, 1, 0xD301, 0x00, 1, 0xD302, 0x00, 1, 0xD303, 0x00, 1, 0xD304, 0x00, 1, 0xD305, 0x00, 1, 0xD306, 0x00, 1, 0xD307, 0x00, 1, 0xD310, 0x00, 1, 0xD311, 0x00, 1, 0xD312, 0x00, 1, 0xD313, 0x00, 1, 0xD314, 0x00, 1, 0xD315, 0x00, 1, 0xD316, 0x00, 1, 0xD317, 0x00, 1, 0xD320, 0x00, 1, 0xD321, 0x00, 1, 0xD322, 0x00, 1, 0xD323, 0x00, 1, 0xD324, 0x00, 1, 0xD325, 0x00, 1, 0xD326, 0x00, 1, 0xD327, 0x00, 1, 0xD330, 0x00, 1, 0xD331, 0x00, 1, 0xD332, 0x00, 1, 0xD333, 0x00, 1, 0xD334, 0x00, 1, 0xD335, 0x00, 1, 0xD336, 0x00, 1, 0xD337, 0x00
75+
76+
cheat "D340"
77+
default 1
78+
0 "default"
79+
1 "1st note off", 1, 0xD340, 0x00, 1, 0xD341, 0x00, 1, 0xD342, 0x00, 1, 0xD343, 0x00, 1, 0xD344, 0x00, 1, 0xD345, 0x00, 1, 0xD346, 0x00, 1, 0xD347, 0x00, 1, 0xD350, 0x00, 1, 0xD351, 0x00, 1, 0xD352, 0x00, 1, 0xD353, 0x00, 1, 0xD354, 0x00, 1, 0xD355, 0x00, 1, 0xD356, 0x00, 1, 0xD357, 0x00, 1, 0xD360, 0x00, 1, 0xD361, 0x00, 1, 0xD362, 0x00, 1, 0xD363, 0x00, 1, 0xD364, 0x00, 1, 0xD365, 0x00, 1, 0xD366, 0x00, 1, 0xD367, 0x00, 1, 0xD370, 0x00, 1, 0xD371, 0x00, 1, 0xD372, 0x00, 1, 0xD373, 0x00, 1, 0xD374, 0x00, 1, 0xD375, 0x00, 1, 0xD376, 0x00, 1, 0xD377, 0x00
80+
81+
cheat "D380"
82+
default 1
83+
0 "default"
84+
1 "1st note off", 1, 0xD380, 0x00, 1, 0xD381, 0x00, 1, 0xD382, 0x00, 1, 0xD383, 0x00, 1, 0xD384, 0x00, 1, 0xD385, 0x00, 1, 0xD386, 0x00, 1, 0xD387, 0x00, 1, 0xD390, 0x00, 1, 0xD391, 0x00, 1, 0xD392, 0x00, 1, 0xD393, 0x00, 1, 0xD394, 0x00, 1, 0xD395, 0x00, 1, 0xD396, 0x00, 1, 0xD397, 0x00, 1, 0xD3A0, 0x00, 1, 0xD3A1, 0x00, 1, 0xD3A2, 0x00, 1, 0xD3A3, 0x00, 1, 0xD3A4, 0x00, 1, 0xD3A5, 0x00, 1, 0xD3A6, 0x00, 1, 0xD3A7, 0x00, 1, 0xD3B0, 0x00, 1, 0xD3B1, 0x00, 1, 0xD3B2, 0x00, 1, 0xD3B3, 0x00, 1, 0xD3B4, 0x00, 1, 0xD3B5, 0x00, 1, 0xD3B6, 0x00, 1, 0xD3B7, 0x00
85+
86+
cheat "D3C0"
87+
default 1
88+
0 "default"
89+
1 "1st note off", 1, 0xD3C0, 0x00, 1, 0xD3C1, 0x00, 1, 0xD3C2, 0x00, 1, 0xD3C3, 0x00, 1, 0xD3C4, 0x00, 1, 0xD3C5, 0x00, 1, 0xD3C6, 0x00, 1, 0xD3C7, 0x00, 1, 0xD3D0, 0x00, 1, 0xD3D1, 0x00, 1, 0xD3D2, 0x00, 1, 0xD3D3, 0x00, 1, 0xD3D4, 0x00, 1, 0xD3D5, 0x00, 1, 0xD3D6, 0x00, 1, 0xD3D7, 0x00, 1, 0xD3E0, 0x00, 1, 0xD3E1, 0x00, 1, 0xD3E2, 0x00, 1, 0xD3E3, 0x00, 1, 0xD3E4, 0x00, 1, 0xD3E5, 0x00, 1, 0xD3E6, 0x00, 1, 0xD3E7, 0x00, 1, 0xD3F0, 0x00, 1, 0xD3F1, 0x00, 1, 0xD3F2, 0x00, 1, 0xD3F3, 0x00, 1, 0xD3F4, 0x00, 1, 0xD3F5, 0x00, 1, 0xD3F6, 0x00, 1, 0xD3F7, 0x00
90+
91+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
arcade_game_romhacking_sourcecode_top_secret_data
2+
for Arcade mame mess sfc snes sega md geoneo
3+
4+
arcade game romhacking sourcecode data asm mame m68k m68000 cps1 capcom rom assember
5+
6+
https://github.com/zengfr/arcade_game_romhacking_sourcecode_top_secret_data
7+
https://gitee.com/zengfr/arcade_game_romhacking_sourcecode_top_secret_data
8+
other data:
9+
10+
github:https://github.com/zengfr/romhack
11+
12+
gitee:https://gitee.com/zengfr/romhack
13+
14+
blog:https://my.oschina.net/zengfr
15+
16+
video:https://space.bilibili.com/492484080/video

0 commit comments

Comments
 (0)