|
|
Line 1: |
Line 1: |
− | ''(Original guide by [[kram]], current revision that fixes major bugs and extends properly by [[GARY 'M 9]])''
| |
− | ''(Updated again by [[kram]], adding back custom titlecard mappings howto, due to guide being unfinished, thus finally fixing the "ZONE ZONE" bug. Replace all the empty levels with your new ones.)''
| |
| | | |
− | '''WARNING:''' Unless you are working with Xenowhirl's 2007 Sonic 2 disassembly, I strongly recommend you [[SCHG_How-to:Port_Sonic_1's_Sound_Driver_to_Sonic_2|port the Sonic 1 sound driver]] first before proceeding. A lot of major data shifting will occur in this tutorial and it '''will''' make the rom size a '''lot''' bigger than it was before. This '''will''' break the sonic2 or even sonic2 beta sound driver, thus so you definitely want the sonic 1 sound driver due to the fact that it can take the shifting and still work properly. However, if you are using Xenowhirl's 2007 Sonic 2 disassembly, it is not necessary to port any other sound driver, since that uses disassembled Z80 code which automatically references the correct locations and can thus work properly even if there are massive location shifts.
| |
− |
| |
− | You probably noticed that all the indexes in the game stop at $10 and when you try to extend it, by extending the MLLB, you get weird glitches or even crashes, that is because you haven't extended all the indexes that need to be extended.
| |
− |
| |
− | ==Extending the Titlecard index==
| |
− | First we find:
| |
− |
| |
− | <asm>
| |
− | Obj34_TitleCardData:
| |
− | dc.b 8, 0, $80, $1B
| |
− | dc.w $240, $120, $B8
| |
− |
| |
− | dc.b $A, $11, $40, $1C
| |
− | dc.w $28, $148, $D0
| |
− |
| |
− | dc.b $C, $12, $18, $1C
| |
− | dc.w $68, $188, $D0
| |
− |
| |
− | dc.b 2, 0, 0, 0
| |
− | dc.w 0, 0, 0
| |
− |
| |
− | dc.b 4, $15, $48, 8
| |
− | dc.w $2A8, $168,$120
| |
− |
| |
− | dc.b 6, $16, 8, $15
| |
− | dc.w $80, $F0, $F0
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | Obj34_TitleCardData:
| |
− | dc.b 8, 0, $80, $1B ; this is the zone string start index and placement
| |
− | dc.w $240, $120, $B8
| |
− |
| |
− | dc.b $A, $21, $40, $1C ; "ZONE" string index number and placement
| |
− | dc.w $28, $148, $D0
| |
− |
| |
− | dc.b $C, $22, $18, $1C ; act number start index and placement
| |
− | dc.w $68, $188, $D0
| |
− |
| |
− | dc.b 2, 0, 0, 0 ; this part of the titlecard is totally unknown, colored backdrop possibly
| |
− | dc.w 0, 0, 0
| |
− |
| |
− | dc.b 4, $25, $48, 8 ; red strip edge index and placement
| |
− | dc.w $2A8, $168,$120
| |
− |
| |
− | dc.b 6, $26, 8, $15 ; red "Sonic The Hedgehog" string and placement
| |
− | dc.w $80, $F0, $F0
| |
− | </asm>
| |
− |
| |
− | next, find:
| |
− | <asm>
| |
− | jsr sub_13D10(pc)
| |
− | move.b (Current_Zone).w,d0
| |
− | cmpi.b #$10,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | cmpi.b #6,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | cmpi.b #$E,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | move.b (Current_Act).w,d1
| |
− | addi.b #$12,d1
| |
− | cmpi.b #5,d0
| |
− | bne.s loc_13E18
| |
− | moveq #$14,d1
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | jsr sub_13D10(pc)
| |
− | move.b (Current_Zone).w,d0
| |
− | cmpi.b #$10,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | cmpi.b #6,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | cmpi.b #$E,d0
| |
− | beq.s BranchTo9_DeleteObject
| |
− | move.b (Current_Act).w,d1
| |
− | addi.b #$22,d1 ; Act number mappings (Act 1)
| |
− | cmpi.b #5,d0
| |
− | bne.s loc_13E18
| |
− | moveq #$24,d1 ; Act number mappings (Act 3). Used for drawing MTZ (0x05) titlecard only
| |
− | </asm>
| |
− |
| |
− | Now we have the offset data of where to load the mappings for the titlecards shifted so that we can now start working on updating the mappings and not have that strange "ZONE ZONE" bug that [[GARY 'M 9]] left behind and I intended to correct.
| |
− |
| |
− | Next, another thing I wanted to see others correct. this time, I will explain why I changed byte_15820 into a 16-bit relative offset index as opposed to it staying as a byte-by-byte relative offset that does not point correctly, and to appropriately handle the string data in word_15832, as well as allow that string data to be properly represented. This time I will make it even clearer too.
| |
− |
| |
− | Next off, in this part of the hack the first thing before converting to a better manageable datatype, we want to replace the byte_15820 handler with a better one.
| |
− |
| |
− | look for:
| |
− | <asm>
| |
− | ; loc_157D2:
| |
− | LoadTitleCard:
| |
− | bsr.s LoadTitleCard0
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | move.b byte_15820(pc,d0.w),d0
| |
− | lea word_15832(pc),a0
| |
− | lea (a0,d0.w),a0
| |
− | move.l #$7BC00002,d0
| |
− | </asm>
| |
− |
| |
− | and we want to replace it with:
| |
− | <asm>
| |
− | ; loc_157D2:
| |
− | LoadTitleCard:
| |
− | bsr.s LoadTitleCard0
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | add.w d0,d0
| |
− | move.w Off_Titlecardtext(pc,d0.w),d0
| |
− | lea Off_Titlecardtext(pc,d0.w),a0
| |
− | move.l #$7BC00002,d0
| |
− | </asm>
| |
− |
| |
− | That takes care of the loader, now time to update the string data.
| |
− |
| |
− | find:
| |
− | <asm>
| |
− | ; unknown
| |
− | byte_15820:
| |
− | dc.b 0, 0, 0, 0,$10,$10,$98,$20,$2C, 0,$3C,$46,$58,$68,$A8,$7A
| |
− | dc.b $8A, 0 ; 16
| |
− | ; unknown
| |
− | word_15832:
| |
− | dc.w $2A06,$3804, 4,$2604, $C04,$1804,$1C02,$FFFF
| |
− | dc.w $2A06,$4004,$3804,$3004,$2604,$1C02,$3C04,$FFFF; 8
| |
− | dc.w $1804,$1C02,$2604,$4004,$3004,$FFFF,$1804,$1C02; 16
| |
− | dc.w $C04,$3004, 4,$2604, $804,$FFFF,$1C02,$2604; 24
| |
− | dc.w $804, 4,$FFFF,$2A06,$5604,$3C04,$4004,$1C02; 32
| |
− | dc.w $804, 4,$4804,$FFFF, $804, 4,$3C04,$1C02; 40
| |
− | dc.w $1404,$1804,$4004,$FFFF, $804,$1804,$2A06,$1C02; 48
| |
− | dc.w 4,$2604,$3004,$4004,$FFFF, 4,$3404,$4404; 56
| |
− | dc.w $4004,$1C02, $804,$3804,$FFFF,$3C04,$2204,$5604; 64
| |
− | dc.w $804,$1804, 4,$FFFF,$4C06,$1C02,$1404,$1004; 72
| |
− | dc.w $3804,$4004,$3C04,$FFFF, $C04, 4,$4004,$1804; 80
| |
− | dc.w $1404,$FFFF ; 88
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | ;byte_15820
| |
− | Off_Titlecardtext:
| |
− | dc.w Text_EHZ-Off_Titlecardtext ; EHZ Titlecard 00
| |
− | dc.w Text_LZ-Off_Titlecardtext ; LZ Titlecard 01
| |
− | dc.w Text_WZ-Off_Titlecardtext ; WZ Titlecard 02
| |
− | dc.w Text_DHZ-Off_Titlecardtext ; DHZ Titlecard 03
| |
− | dc.w Text_MTZ-Off_Titlecardtext ; MTZ Titlecard 04
| |
− | dc.w Text_MTZ-Off_Titlecardtext ; MTZ Titlecard 05
| |
− | dc.w Text_WFZ-Off_Titlecardtext ; WFZ Titlecard 06
| |
− | dc.w Text_HTZ-Off_Titlecardtext ; HTZ Titlecard 07
| |
− | dc.w Text_HPZ-Off_Titlecardtext ; HPZ Titlecard 08
| |
− | dc.w Text_GCZ-Off_Titlecardtext ; GCZ Titlecard 09
| |
− | dc.w Text_OOZ-Off_Titlecardtext ; OOZ Titlecard 0A
| |
− | dc.w Text_MCZ-Off_Titlecardtext ; MCZ Titlecard 0B
| |
− | dc.w Text_CNZ-Off_Titlecardtext ; CNZ Titlecard 0C
| |
− | dc.w Text_CPZ-Off_Titlecardtext ; CPZ Titlecard 0D
| |
− | dc.w Text_DEZ-Off_Titlecardtext ; DEZ Titlecard 0E
| |
− | dc.w Text_ARZ-Off_Titlecardtext ; ARZ Titlecard 0F
| |
− | dc.w Text_SCZ-Off_Titlecardtext ; SCZ Titlecard 10
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 11
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 12
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 13
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 14
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 15
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 16
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 17
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 18
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 19
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1A
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1B
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1C
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1D
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1E
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 1F
| |
− | dc.w Text_NZ-Off_Titlecardtext ; NZ Titlecard 20
| |
− |
| |
− | ;word_15832
| |
− | Text_EHZ: dc.b $2A,$38,$00,$26,$0C,$18,$1C ; 'MRALDHI'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_LZ: dc.b $26,$00,$04,$56,$38,$1C,$40,$18 ; 'LABYRITH'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_WZ: dc.b $4C,$0C ; 'WD'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_DHZ: dc.b $0C,$44,$3C,$40,$18,$1C,$26 ; 'DUSTHIL'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_MTZ: dc.b $2A,$40,$38,$30,$26,$1C,$3C ; 'MTRPLIS'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_WFZ: dc.b $4C,$1C,$14,$10,$38,$40,$3C ; 'WIGFRTS'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_HTZ: dc.b $18,$1C,$26,$40,$30 ; 'HILTP'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_HPZ: dc.b $18,$1C,$0C,$30,$00,$26,$08 ; 'HIDPALCE'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_GCZ: dc.b $14,$08,$1C,$0C,$40,$56 ; 'GCIDTY'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_OOZ: dc.b $1C,$26,$08,$00 ; 'ILCAN'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_MCZ: dc.b $2A,$56,$3C,$40,$1C,$08,$00,$48 ; 'MYSTICAV'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_CNZ: dc.b $08,$00,$3C,$1C,$14,$18,$40 ; 'CASIGHT'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_CPZ: dc.b $08,$18,$2A,$1C,$00,$26,$30,$40 ; 'CHMICALPT'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_DEZ: dc.b $0C,$00,$40,$18,$14 ; 'DATHG'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_ARZ: dc.b $00,$34,$44,$40,$1C,$08,$38 ; 'AQUTICR'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_SCZ: dc.b $3C,$22,$56,$08,$18,$00,$3C ; 'SKYCHAS'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | Text_NZ: dc.b $4C ; 'W'
| |
− | dc.w $FFFF ; '<EOF>'
| |
− | </asm>
| |
− |
| |
− | This extends the title card index to $20, adds titlecards for Wood Zone, Labyrinth Zone, Dust Hill Zone, Genocide City Zone, and an empty New Zone titlecard for every single level above SCZ, compacts the titlecard text data for all titlecards, and makes it more easier to manage. you will be wondering probably what to do with the mappings. Well that is what is next.
| |
− |
| |
− | find:
| |
− | <asm>
| |
− | ; -------------------------------------------------------------------------------
| |
− | ; sprite mappings
| |
− | ; -------------------------------------------------------------------------------
| |
− | Obj34_MapUnc_147BA: BINCLUDE "mappings/sprite/obj34.bin"
| |
− | ; -------------------------------------------------------------------------------
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | ; -------------------------------------------------------------------------------
| |
− | ; sprite mappings
| |
− | ; -------------------------------------------------------------------------------
| |
− | Obj34_MapUnc_147BA: dc.w Titlecard_EHZ-Obj34_MapUnc_147BA ; EHZ 00
| |
− | dc.w Titlecard_LZ-Obj34_MapUnc_147BA ; LZ 01
| |
− | dc.w Titlecard_WZ-Obj34_MapUnc_147BA ; WZ 02
| |
− | dc.w Titlecard_DHZ-Obj34_MapUnc_147BA ; DHZ 03
| |
− | dc.w Titlecard_MTZ-Obj34_MapUnc_147BA ; MTZ 04
| |
− | dc.w Titlecard_MTZ-Obj34_MapUnc_147BA ; MTZ 05
| |
− | dc.w Titlecard_WFZ-Obj34_MapUnc_147BA ; WFZ 06
| |
− | dc.w Titlecard_HTZ-Obj34_MapUnc_147BA ; HTZ 07
| |
− | dc.w Titlecard_HPZ-Obj34_MapUnc_147BA ; HPZ 08
| |
− | dc.w Titlecard_GCZ-Obj34_MapUnc_147BA ; GCZ 09
| |
− | dc.w Titlecard_OOZ-Obj34_MapUnc_147BA ; OOZ 0A
| |
− | dc.w Titlecard_MCZ-Obj34_MapUnc_147BA ; MCZ 0B
| |
− | dc.w Titlecard_CNZ-Obj34_MapUnc_147BA ; CNZ 0C
| |
− | dc.w Titlecard_CPZ-Obj34_MapUnc_147BA ; CPZ 0D
| |
− | dc.w Titlecard_DEZ-Obj34_MapUnc_147BA ; DEZ 0E
| |
− | dc.w Titlecard_ARZ-Obj34_MapUnc_147BA ; ARZ 0F
| |
− | dc.w Titlecard_SCZ-Obj34_MapUnc_147BA ; SCZ 10
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 11
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 12
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 13
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 14
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 15
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 16
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 17
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 18
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 19
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1A
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1B
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1C
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1D
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1E
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 1F
| |
− | dc.w Titlecard_NZ-Obj34_MapUnc_147BA ; NZ 20
| |
− | dc.w T_ZONE-Obj34_MapUnc_147BA ; "ZONE"
| |
− | dc.w T_ACT1-Obj34_MapUnc_147BA ; "1"
| |
− | dc.w T_ACT2-Obj34_MapUnc_147BA ; "2"
| |
− | dc.w T_ACT3-Obj34_MapUnc_147BA ; "3"
| |
− | dc.w T_STH-Obj34_MapUnc_147BA ; "SONIC THE HEDGEHOG"
| |
− | dc.w T_STRIPEDGE-Obj34_MapUnc_147BA ; ">"
| |
− |
| |
− | Titlecard_EHZ: dc.w $b ; number of letters
| |
− | dc.w $0005, $8580, $82C0, $FFC0 ;E
| |
− | dc.w $0009, $85DE, $82EF, $FFD0 ;M
| |
− | dc.w $0005, $8580, $82C0, $FFE8 ;E
| |
− | dc.w $0005, $85E4, $82F2, $FFF8 ;R
| |
− | dc.w $0005, $85E8, $82F4, $0008 ;A
| |
− | dc.w $0005, $85EC, $82F6, $0018 ;L
| |
− | dc.w $0005, $85F0, $82F8, $0028 ;D
| |
− |
| |
− | dc.w $0005, $85F4, $82FA, $0048 ;H
| |
− | dc.w $0001, $85F8, $82F2, $0058 ;I
| |
− | dc.w $0005, $85EC, $82F6, $0060 ;L
| |
− | dc.w $0005, $85EC, $82F6, $0070 ;L
| |
− |
| |
− | Titlecard_LZ: dc.w $9 ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFE8 ;L
| |
− | dc.w $0005, $85E2, $82F1, $FFF8 ;A
| |
− | dc.w $0005, $85E6, $82F3, $0008 ;B
| |
− | dc.w $0005, $85EA, $82F5, $0018 ;Y
| |
− | dc.w $0005, $85EE, $82F7, $0028 ;R
| |
− | dc.w $0001, $85F2, $82F9, $0038 ;I
| |
− | dc.w $0005, $8584, $82C2, $0040 ;N
| |
− | dc.w $0005, $85F4, $82FA, $0050 ;T
| |
− | dc.w $0005, $85F8, $82FC, $0060 ;H
| |
− |
| |
− | Titlecard_WZ: dc.w $4 ; number of letters
| |
− | dc.w $0009, $85DE, $82EF, $0008 ;W
| |
− | dc.w $0005, $8588, $82C4, $0010 ;O
| |
− | dc.w $0005, $8588, $82C4, $0020 ;O
| |
− | dc.w $0005, $85E4, $82F2, $0030 ;D
| |
− |
| |
− |
| |
− | Titlecard_DHZ: dc.w $8 ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFE8 ;D
| |
− | dc.w $0005, $85E2, $82F1, $FFF8 ;U
| |
− | dc.w $0005, $85E6, $82F3, $0008 ;S
| |
− | dc.w $0005, $85EA, $82F5, $0018 ;T
| |
− |
| |
− | dc.w $0005, $85EE, $82F7, $0038 ;H
| |
− | dc.w $0001, $85F2, $82F9, $0048 ;I
| |
− | dc.w $0005, $85F4, $82FA, $0050 ;L
| |
− | dc.w $0005, $85F4, $82FA, $0060 ;L
| |
− |
| |
− | Titlecard_MTZ: dc.w $a ; number of letters
| |
− | dc.w $0009, $85DE, $82EF, $FFE8 ;M
| |
− | dc.w $0005, $8580, $82C0, $FFF8 ;E
| |
− | dc.w $0005, $85E4, $82F2, $0008 ;T
| |
− | dc.w $0005, $85E8, $82F4, $0018 ;R
| |
− | dc.w $0005, $8588, $82C4, $0028 ;O
| |
− | dc.w $0005, $85EC, $82F6, $0038 ;P
| |
− | dc.w $0005, $8588, $82C4, $0048 ;O
| |
− | dc.w $0005, $85F0, $82F8, $0058 ;L
| |
− | dc.w $0001, $85F4, $82FA, $0068 ;I
| |
− | dc.w $0005, $85F6, $82FB, $0070 ;S
| |
− |
| |
− | Titlecard_WFZ: dc.w $c ; number of letters
| |
− | dc.w $0009, $85DE, $82EF, $FFB0 ;W
| |
− | dc.w $0001, $85E4, $82F2, $FFC8 ;I
| |
− | dc.w $0005, $8584, $82C2, $FFD0 ;N
| |
− | dc.w $0005, $85E6, $82F3, $FFE0 ;G
| |
− |
| |
− | dc.w $0005, $85EA, $82F5, $0000 ;F
| |
− | dc.w $0005, $8588, $82C4, $0010 ;O
| |
− | dc.w $0005, $85EE, $82F7, $0020 ;R
| |
− | dc.w $0005, $85F2, $82F9, $0030 ;T
| |
− | dc.w $0005, $85EE, $82F7, $0040 ;R
| |
− | dc.w $0005, $8580, $82C0, $0050 ;E
| |
− | dc.w $0005, $85F6, $82FB, $0060 ;S
| |
− | dc.w $0005, $85F6, $82FB, $0070 ;S
| |
− |
| |
− | Titlecard_HTZ: dc.w $7 ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $0008 ;H
| |
− | dc.w $0001, $85E2, $82F1, $0018 ;I
| |
− | dc.w $0005, $85E4, $82F2, $0020 ;L
| |
− | dc.w $0005, $85E4, $82F2, $0030 ;L
| |
− |
| |
− | dc.w $0005, $85E8, $82F4, $0050 ;T
| |
− | dc.w $0005, $8588, $82C4, $0060 ;O
| |
− | dc.w $0005, $85EC, $82F6, $0070 ;P
| |
− |
| |
− | Titlecard_HPZ: dc.w $c ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFB8 ;H
| |
− | dc.w $0001, $85E2, $82F1, $FFC8 ;I
| |
− | dc.w $0005, $85E4, $82F2, $FFD0 ;D
| |
− | dc.w $0005, $85E4, $82F2, $FFE0 ;D
| |
− | dc.w $0005, $8580, $82C0, $FFF0 ;E
| |
− | dc.w $0005, $8584, $82C4, $0000 ;N
| |
− |
| |
− | dc.w $0005, $85E8, $82F4, $0020 ;P
| |
− | dc.w $0005, $85EC, $82F6, $0030 ;A
| |
− | dc.w $0005, $85F0, $82F8, $0040 ;L
| |
− | dc.w $0005, $85EC, $82F6, $0050 ;A
| |
− | dc.w $0005, $85F4, $82FA, $0060 ;C
| |
− | dc.w $0005, $8580, $82C0, $0070 ;E
| |
− |
| |
− | Titlecard_GCZ: dc.w $c ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFB8 ;G
| |
− | dc.w $0005, $8580, $82C0, $FFC8 ;E
| |
− | dc.w $0005, $8584, $82C2, $FFD8 ;N
| |
− | dc.w $0005, $8588, $82C4, $FFE8 ;O
| |
− | dc.w $0005, $85E2, $82F1, $FFF8 ;C
| |
− | dc.w $0001, $85E6, $82F3, $0008 ;I
| |
− | dc.w $0005, $85E8, $82F4, $0010 ;D
| |
− | dc.w $0005, $8580, $82C0, $0020 ;E
| |
− |
| |
− | dc.w $0005, $85E2, $82F1, $0040 ;C
| |
− | dc.w $0001, $85E6, $82F3, $0050 ;I
| |
− | dc.w $0005, $85EC, $82F6, $0058 ;T
| |
− | dc.w $0005, $85F0, $82F8, $0068 ;Y
| |
− |
| |
− | Titlecard_OOZ: dc.w $8 ; number of letters
| |
− | dc.w $0005, $8588, $82C4, $FFF8 ;O
| |
− | dc.w $0001, $85DE, $82EF, $0008 ;I
| |
− | dc.w $0005, $85E0, $82F0, $0010 ;L
| |
− |
| |
− | dc.w $0005, $8588, $82C4, $0030 ;O
| |
− | dc.w $0005, $85E4, $82F2, $0040 ;C
| |
− | dc.w $0005, $8580, $82C0, $0050 ;E
| |
− | dc.w $0005, $85E8, $82F4, $0060 ;A
| |
− | dc.w $0005, $8584, $82C2, $0070 ;N
| |
− |
| |
− | Titlecard_MCZ: dc.w $a ; number of letters
| |
− | dc.w $0009, $85DE, $82EF, $FFD0 ;M
| |
− | dc.w $0005, $85E4, $82F2, $FFE8 ;Y
| |
− | dc.w $0005, $85E8, $82F4, $FFF8 ;S
| |
− | dc.w $0005, $85EC, $82F6, $0008 ;T
| |
− | dc.w $0001, $85F0, $82F8, $0018 ;I
| |
− | dc.w $0005, $85F2, $82F9, $0020 ;C
| |
− |
| |
− | dc.w $0005, $85F2, $82F9, $0040 ;C
| |
− | dc.w $0005, $85F6, $82FB, $0050 ;A
| |
− | dc.w $0005, $85FA, $82FD, $0060 ;V
| |
− | dc.w $0005, $8580, $82C0, $0070 ;E
| |
− |
| |
− | Titlecard_CNZ: dc.w $b ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFD0 ;C
| |
− | dc.w $0005, $85E2, $82F1, $FFE0 ;A
| |
− | dc.w $0005, $85E6, $82F3, $FFF0 ;S
| |
− | dc.w $0001, $85EA, $82F5, $0000 ;I
| |
− | dc.w $0005, $8584, $82C2, $0008 ;N
| |
− | dc.w $0005, $8588, $82C4, $0018 ;O
| |
− |
| |
− | dc.w $0005, $8584, $82C2, $0038 ;N
| |
− | dc.w $0001, $85EA, $82F5, $0048 ;I
| |
− | dc.w $0005, $85EC, $82F6, $0050 ;G
| |
− | dc.w $0005, $85F0, $82F8, $0060 ;H
| |
− | dc.w $0005, $85F4, $82FA, $0070 ;T
| |
− |
| |
− | Titlecard_CPZ: dc.w $d ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFA0 ;C
| |
− | dc.w $0005, $85E2, $82F1, $FFB0 ;H
| |
− | dc.w $0005, $8580, $82C0, $FFC0 ;E
| |
− | dc.w $0009, $85E6, $82F3, $FFD0 ;M
| |
− | dc.w $0001, $85EC, $82F6, $FFE8 ;I
| |
− | dc.w $0005, $85DE, $82EF, $FFF0 ;C
| |
− | dc.w $0005, $85EE, $82F7, $0000 ;A
| |
− | dc.w $0005, $85F2, $82F9, $0010 ;L
| |
− |
| |
− | dc.w $0005, $85F6, $82FB, $0030 ;P
| |
− | dc.w $0005, $85F2, $82F9, $0040 ;L
| |
− | dc.w $0005, $85EE, $82F7, $0050 ;A
| |
− | dc.w $0005, $8584, $82C2, $0060 ;N
| |
− | dc.w $0005, $85FA, $82FD, $0070 ;T
| |
− |
| |
− | Titlecard_DEZ: dc.w $8 ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFF0 ;D
| |
− | dc.w $0005, $8580, $82C0, $0000 ;E
| |
− | dc.w $0005, $85E2, $82F1, $0010 ;A
| |
− | dc.w $0005, $85E6, $82F3, $0020 ;T
| |
− | dc.w $0005, $85EA, $82F5, $0030 ;H
| |
− |
| |
− | dc.w $0005, $8580, $82C0, $0050 ;E
| |
− | dc.w $0005, $85EE, $82F7, $0060 ;G
| |
− | dc.w $0005, $85EE, $82F7, $0070 ;G
| |
− |
| |
− | Titlecard_ARZ: dc.w $c ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFD0 ;A
| |
− | dc.w $0005, $85E2, $82F1, $FFE0 ;Q
| |
− | dc.w $0005, $85E6, $82F3, $FFF0 ;U
| |
− | dc.w $0005, $85DE, $82EF, $0000 ;A
| |
− | dc.w $0005, $85EA, $82F5, $0010 ;T
| |
− | dc.w $0001, $85EE, $82F7, $0020 ;I
| |
− | dc.w $0005, $85F0, $82F8, $0028 ;C
| |
− |
| |
− | dc.w $0005, $85F4, $82FA, $0048 ;R
| |
− | dc.w $0005, $85E6, $82F3, $0058 ;U
| |
− | dc.w $0001, $85EE, $82F7, $0068 ;I
| |
− | dc.w $0005, $8584, $82C2, $0070 ;N
| |
− |
| |
− | Titlecard_SCZ: dc.w $8 ; number of letters
| |
− | dc.w $0005, $85DE, $82EF, $FFF0 ;S
| |
− | dc.w $0005, $85E2, $82F1, $0000 ;K
| |
− | dc.w $0005, $85E6, $82F3, $0010 ;Y
| |
− |
| |
− | dc.w $0005, $85EA, $82F5, $0030 ;C
| |
− | dc.w $0005, $85EE, $82F7, $0040 ;H
| |
− | dc.w $0005, $85F2, $82F7, $0050 ;A
| |
− | dc.w $0005, $85DE, $82EF, $0060 ;S
| |
− | dc.w $0005, $8580, $82C0, $0070 ;E
| |
− |
| |
− | Titlecard_NZ: dc.w $3 ; number of letters
| |
− | dc.w $0005, $8584, $82C2, $0048 ;N
| |
− | dc.w $0005, $8580, $82C0, $0058 ;E
| |
− | dc.w $0009, $85DE, $82EF, $0068 ;W
| |
− |
| |
− | T_ZONE: dc.w $4 ; number of letters
| |
− | dc.w $0005, $858C, $82C6, $0000 ;Z
| |
− | dc.w $0005, $8588, $82C4, $0010 ;O
| |
− | dc.w $0005, $8584, $82C2, $0020 ;N
| |
− | dc.w $0005, $8580, $82C0, $0030 ;E
| |
− |
| |
− |
| |
− | T_ACT1: dc.w $1 ; number of letters
| |
− | dc.w $0007, $A590, $A2C8, $0000 ;1
| |
− |
| |
− | T_ACT2: dc.w $1 ; number of letters
| |
− | dc.w $000B, $A598, $A2CC, $0000 ;2
| |
− |
| |
− | T_ACT3: dc.w $1 ; number of letters
| |
− | dc.w $000B, $A5A4, $A2D2, $0000 ;3
| |
− |
| |
− | T_STH: dc.w $5 ; number of letters
| |
− | dc.w $000D, $85B0, $82DE, $FFB8 ;SONI
| |
− | dc.w $000D, $85B8, $82DC, $FFD8 ;C TH
| |
− | dc.w $000D, $85C0, $82E0, $FFF8 ;E HE
| |
− | dc.w $000D, $85C8, $82E4, $0018 ;DGEH
| |
− | dc.w $0005, $85D0, $82E8, $0038 ;OG
| |
− |
| |
− | T_STRIPEDGE: dc.w $7 ; number of letters
| |
− | dc.w $9003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $B003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $D003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $F003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $1003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $3003, $85D4, $82EA, $0000 ;>
| |
− | dc.w $5003, $85D4, $82EA, $0000 ;>
| |
− |
| |
− | ; -------------------------------------------------------------------------------
| |
− | </asm>
| |
− |
| |
− | ==Extending the cycling palette information==
| |
− | Now we want to locate:
| |
− | <asm>
| |
− | ; off_19F4:
| |
− | PalCycle:
| |
− | dc.w PalCycle_EHZ - PalCycle ; 0
| |
− | dc.w PalCycle_Null - PalCycle ; 1
| |
− | dc.w PalCycle_Level2 - PalCycle ; 2
| |
− | dc.w PalCycle_Null - PalCycle ; 3
| |
− | dc.w PalCycle_MTZ - PalCycle ; 4
| |
− | dc.w PalCycle_MTZ - PalCycle ; 5
| |
− | dc.w PalCycle_WFZ - PalCycle ; 6
| |
− | dc.w PalCycle_HTZ - PalCycle ; 7
| |
− | dc.w PalCycle_HPZ - PalCycle ; 8
| |
− | dc.w PalCycle_Null - PalCycle ; 9
| |
− | dc.w PalCycle_OOZ - PalCycle ; 10
| |
− | dc.w PalCycle_MCZ - PalCycle ; 11
| |
− | dc.w PalCycle_CNZ - PalCycle ; 12
| |
− | dc.w PalCycle_CPZ - PalCycle ; 13
| |
− | dc.w PalCycle_CPZ - PalCycle ; 14
| |
− | dc.w PalCycle_ARZ - PalCycle ; 15
| |
− | dc.w PalCycle_WFZ - PalCycle ; 16
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | ; off_19F4:
| |
− | PalCycle:
| |
− | dc.w PalCycle_EHZ - PalCycle ; 00
| |
− | dc.w PalCycle_Null - PalCycle ; 01
| |
− | dc.w PalCycle_Level2 - PalCycle ; 02
| |
− | dc.w PalCycle_Null - PalCycle ; 03
| |
− | dc.w PalCycle_MTZ - PalCycle ; 04
| |
− | dc.w PalCycle_MTZ - PalCycle ; 05
| |
− | dc.w PalCycle_WFZ - PalCycle ; 06
| |
− | dc.w PalCycle_HTZ - PalCycle ; 07
| |
− | dc.w PalCycle_HPZ - PalCycle ; 08
| |
− | dc.w PalCycle_Null - PalCycle ; 09
| |
− | dc.w PalCycle_OOZ - PalCycle ; 0A
| |
− | dc.w PalCycle_MCZ - PalCycle ; 0B
| |
− | dc.w PalCycle_CNZ - PalCycle ; 0C
| |
− | dc.w PalCycle_CPZ - PalCycle ; 0D
| |
− | dc.w PalCycle_CPZ - PalCycle ; 0E
| |
− | dc.w PalCycle_ARZ - PalCycle ; 0F
| |
− | dc.w PalCycle_WFZ - PalCycle ; 10
| |
− | dc.w PalCycle_Null - PalCycle ; 11
| |
− | dc.w PalCycle_Null - PalCycle ; 12
| |
− | dc.w PalCycle_Null - PalCycle ; 13
| |
− | dc.w PalCycle_Null - PalCycle ; 14
| |
− | dc.w PalCycle_Null - PalCycle ; 15
| |
− | dc.w PalCycle_Null - PalCycle ; 16
| |
− | dc.w PalCycle_Null - PalCycle ; 17
| |
− | dc.w PalCycle_Null - PalCycle ; 18
| |
− | dc.w PalCycle_Null - PalCycle ; 19
| |
− | dc.w PalCycle_Null - PalCycle ; 1A
| |
− | dc.w PalCycle_Null - PalCycle ; 1B
| |
− | dc.w PalCycle_Null - PalCycle ; 1C
| |
− | dc.w PalCycle_Null - PalCycle ; 1D
| |
− | dc.w PalCycle_Null - PalCycle ; 1E
| |
− | dc.w PalCycle_Null - PalCycle ; 1F
| |
− | dc.w PalCycle_Null - PalCycle ; 20
| |
− | </asm>
| |
− |
| |
− | That inserts empty slots for the cycling palettes of out new levels.
| |
− |
| |
− | ==Extending the static palette list==
| |
− | Next we locate:
| |
− | <asm>
| |
− | PalPointers:
| |
− | palptr Pal_SEGA, Normal_palette, $1F
| |
− | palptr Pal_Title, Normal_palette_line2, 7
| |
− | palptr Pal_UNK1, Normal_palette, $1F
| |
− | palptr Pal_BGND, Normal_palette, $F
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_WZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_MTZ, Normal_palette_line2, $17
| |
− | palptr Pal_MTZ, Normal_palette_line2, $17
| |
− | palptr Pal_WFZ, Normal_palette_line2, $17
| |
− | palptr Pal_HTZ, Normal_palette_line2, $17
| |
− | palptr Pal_HPZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_OOZ, Normal_palette_line2, $17
| |
− | palptr Pal_MCZ, Normal_palette_line2, $17
| |
− | palptr Pal_CNZ, Normal_palette_line2, $17
| |
− | palptr Pal_CPZ, Normal_palette_line2, $17
| |
− | palptr Pal_DEZ, Normal_palette_line2, $17
| |
− | palptr Pal_ARZ, Normal_palette_line2, $17
| |
− | palptr Pal_SCZ, Normal_palette_line2, $17
| |
− | palptr Pal_HPZ_U, Normal_palette, $1F
| |
− | palptr Pal_CPZ_U, Normal_palette, $1F
| |
− | palptr Pal_ARZ_U, Normal_palette, $1F
| |
− | palptr Pal_SS, Normal_palette, $17
| |
− | palptr Pal_UNK2, Normal_palette_line2, 7
| |
− | palptr Pal_UNK3, Normal_palette_line2, 7
| |
− | palptr Pal_SS1, Normal_palette_line4, 7
| |
− | palptr Pal_SS2, Normal_palette_line4, 7
| |
− | palptr Pal_SS3, Normal_palette_line4, 7
| |
− | palptr Pal_SS4, Normal_palette_line4, 7
| |
− | palptr Pal_SS5, Normal_palette_line4, 7
| |
− | palptr Pal_SS6, Normal_palette_line4, 7
| |
− | palptr Pal_SS7, Normal_palette_line4, 7
| |
− | palptr Pal_UNK4, Normal_palette_line4, 7
| |
− | palptr Pal_UNK5, Normal_palette_line4, 7
| |
− | palptr Pal_UNK6, Normal_palette_line4, 7
| |
− | palptr Pal_OOZ_B, Normal_palette_line2, 7
| |
− | palptr Pal_Menu, Normal_palette, $1F
| |
− | palptr Pal_UNK7, Normal_palette, $1F
| |
− |
| |
− | ; ----------------------------------------------------------------------------
| |
− | Pal_SEGA: BINCLUDE "art/palettes/Sega screen.bin" ; SEGA screen palette (Sonic and initial background)
| |
− | Pal_Title: BINCLUDE "art/palettes/Title screen.bin" ; Title screen Palette
| |
− | Pal_UNK1: BINCLUDE "art/palettes/Unknown 1.bin" ; Unknown palette 1 (leftover S1 level select palette?)
| |
− | Pal_BGND: BINCLUDE "art/palettes/SonicAndTails.bin" ; "Sonic and Miles" background palette (also usually the primary palette line)
| |
− | Pal_EHZ: BINCLUDE "art/palettes/EHZ.bin" ; Emerald Hill Zone palette
| |
− | Pal_WZ: BINCLUDE "art/palettes/Wood Zone.bin" ; Wood Zone palette
| |
− | Pal_MTZ: BINCLUDE "art/palettes/MTZ.bin" ; Metropolis Zone palette
| |
− | Pal_WFZ: BINCLUDE "art/palettes/WFZ.bin" ; Wing Fortress Zone palette
| |
− | Pal_HTZ: BINCLUDE "art/palettes/HTZ.bin" ; Hill Top Zone palette
| |
− | Pal_HPZ: BINCLUDE "art/palettes/HPZ.bin" ; Hidden Palace Zone palette
| |
− | Pal_HPZ_U: BINCLUDE "art/palettes/HPZ underwater.bin" ; Hidden Palace Zone underwater palette
| |
− | Pal_OOZ: BINCLUDE "art/palettes/OOZ.bin" ; Oil Ocean Zone palette
| |
− | Pal_MCZ: BINCLUDE "art/palettes/MCZ.bin" ; Mystic Cave Zone palette
| |
− | Pal_CNZ: BINCLUDE "art/palettes/CNZ.bin" ; Casino Night Zone palette
| |
− | Pal_CPZ: BINCLUDE "art/palettes/CPZ.bin" ; Chemical Plant Zone palette
| |
− | Pal_CPZ_U: BINCLUDE "art/palettes/CPZ underwater.bin" ; Chemical Plant Zone underwater palette
| |
− | Pal_DEZ: BINCLUDE "art/palettes/DEZ.bin" ; Death Egg Zone palette
| |
− | Pal_ARZ: BINCLUDE "art/palettes/ARZ.bin" ; Aquatic Ruin Zone palette
| |
− | Pal_ARZ_U: BINCLUDE "art/palettes/ARZ underwater.bin" ; Aquatic Ruin Zone underwater palette
| |
− | Pal_SCZ: BINCLUDE "art/palettes/SCZ.bin" ; Sky Chase Zone palette
| |
− | Pal_UNK2: BINCLUDE "art/palettes/Unknown 2.bin" ; Unknown palette 2
| |
− | Pal_UNK3: BINCLUDE "art/palettes/Unknown 3.bin" ; Unknown palette 3
| |
− | Pal_OOZ_B: BINCLUDE "art/palettes/OOZ Boss.bin" ; Oil Ocean Zone boss palette
| |
− | Pal_Menu: BINCLUDE "art/palettes/Menu.bin" ; Menu palette
| |
− | Pal_SS: BINCLUDE "art/palettes/Special Stage Main.bin" ; Special Stage palette
| |
− | Pal_SS1: BINCLUDE "art/palettes/Special Stage 1.bin" ; Special Stage 1 palette
| |
− | Pal_SS2: BINCLUDE "art/palettes/Special Stage 2.bin" ; Special Stage 2 palette
| |
− | Pal_SS3: BINCLUDE "art/palettes/Special Stage 3.bin" ; Special Stage 3 palette
| |
− | Pal_SS4: BINCLUDE "art/palettes/Special Stage 4.bin" ; Special Stage 4 palette
| |
− | Pal_SS5: BINCLUDE "art/palettes/Special Stage 5.bin" ; Special Stage 5 palette
| |
− | Pal_SS6: BINCLUDE "art/palettes/Special Stage 6.bin" ; Special Stage 6 palette
| |
− | Pal_SS7: BINCLUDE "art/palettes/Special Stage 7.bin" ; Special Stage 7 palette
| |
− | Pal_UNK4: BINCLUDE "art/palettes/Special Stage 1 2p.bin" ; Special Stage 1 2p palette
| |
− | Pal_UNK5: BINCLUDE "art/palettes/Special Stage 2 2p.bin" ; Special Stage 2 2p palette
| |
− | Pal_UNK6: BINCLUDE "art/palettes/Special Stage 3 2p.bin" ; Special Stage 3 2p palette
| |
− | Pal_UNK7: BINCLUDE "art/palettes/Special Stage Results Screen.bin" ; Special Stage Results Screen palette
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | PalPointers:
| |
− | palptr Pal_SEGA, Normal_palette, $1F
| |
− | palptr Pal_Title, Normal_palette_line2, 7
| |
− | palptr Pal_UNK1, Normal_palette, $1F
| |
− | palptr Pal_BGND, Normal_palette, $F
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_WZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_MTZ, Normal_palette_line2, $17
| |
− | palptr Pal_MTZ, Normal_palette_line2, $17
| |
− | palptr Pal_WFZ, Normal_palette_line2, $17
| |
− | palptr Pal_HTZ, Normal_palette_line2, $17
| |
− | palptr Pal_HPZ, Normal_palette_line2, $17
| |
− | palptr Pal_EHZ, Normal_palette_line2, $17
| |
− | palptr Pal_OOZ, Normal_palette_line2, $17
| |
− | palptr Pal_MCZ, Normal_palette_line2, $17
| |
− | palptr Pal_CNZ, Normal_palette_line2, $17
| |
− | palptr Pal_CPZ, Normal_palette_line2, $17
| |
− | palptr Pal_DEZ, Normal_palette_line2, $17
| |
− | palptr Pal_ARZ, Normal_palette_line2, $17
| |
− | palptr Pal_SCZ, Normal_palette_line2, $17
| |
− | palptr Pal_HPZ_U, Normal_palette, $1F
| |
− | palptr Pal_CPZ_U, Normal_palette, $1F
| |
− | palptr Pal_ARZ_U, Normal_palette, $1F
| |
− | palptr Pal_SS, Normal_palette, $17
| |
− | palptr Pal_UNK2, Normal_palette_line2, 7
| |
− | palptr Pal_UNK3, Normal_palette_line2, 7
| |
− | palptr Pal_SS1, Normal_palette_line4, 7
| |
− | palptr Pal_SS2, Normal_palette_line4, 7
| |
− | palptr Pal_SS3, Normal_palette_line4, 7
| |
− | palptr Pal_SS4, Normal_palette_line4, 7
| |
− | palptr Pal_SS5, Normal_palette_line4, 7
| |
− | palptr Pal_SS6, Normal_palette_line4, 7
| |
− | palptr Pal_SS7, Normal_palette_line4, 7
| |
− | palptr Pal_UNK4, Normal_palette_line4, 7
| |
− | palptr Pal_UNK5, Normal_palette_line4, 7
| |
− | palptr Pal_UNK6, Normal_palette_line4, 7
| |
− | palptr Pal_OOZ_B, Normal_palette_line2, 7
| |
− | palptr Pal_Menu, Normal_palette, $1F
| |
− | palptr Pal_UNK7, Normal_palette, $1F
| |
− | palptr Pal_Lev11, Normal_palette_line2, $17
| |
− | palptr Pal_Lev12, Normal_palette_line2, $17
| |
− | palptr Pal_Lev13, Normal_palette_line2, $17
| |
− | palptr Pal_Lev14, Normal_palette_line2, $17
| |
− | palptr Pal_Lev15, Normal_palette_line2, $17
| |
− | palptr Pal_Lev16, Normal_palette_line2, $17
| |
− | palptr Pal_Lev17, Normal_palette_line2, $17
| |
− | palptr Pal_Lev18, Normal_palette_line2, $17
| |
− | palptr Pal_Lev19, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1A, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1B, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1C, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1D, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1E, Normal_palette_line2, $17
| |
− | palptr Pal_Lev1F, Normal_palette_line2, $17
| |
− | palptr Pal_Lev20, Normal_palette_line2, $17
| |
− |
| |
− | ; ----------------------------------------------------------------------------
| |
− | Pal_SEGA: BINCLUDE "art/palettes/Sega screen.bin" ; SEGA screen palette (Sonic and initial background)
| |
− | Pal_Title: BINCLUDE "art/palettes/Title screen.bin" ; Title screen Palette
| |
− | Pal_UNK1: BINCLUDE "art/palettes/Unknown 1.bin" ; Unknown palette 1 (leftover S1 level select palette?)
| |
− | Pal_BGND: BINCLUDE "art/palettes/SonicAndTails.bin" ; "Sonic and Miles" background palette (also usually the primary palette line)
| |
− | Pal_EHZ: BINCLUDE "art/palettes/EHZ.bin" ; Emerald Hill Zone palette
| |
− | Pal_WZ: BINCLUDE "art/palettes/Wood Zone.bin" ; Wood Zone palette
| |
− | Pal_MTZ: BINCLUDE "art/palettes/MTZ.bin" ; Metropolis Zone palette
| |
− | Pal_WFZ: BINCLUDE "art/palettes/WFZ.bin" ; Wing Fortress Zone palette
| |
− | Pal_HTZ: BINCLUDE "art/palettes/HTZ.bin" ; Hill Top Zone palette
| |
− | Pal_HPZ: BINCLUDE "art/palettes/HPZ.bin" ; Hidden Palace Zone palette
| |
− | Pal_HPZ_U: BINCLUDE "art/palettes/HPZ underwater.bin" ; Hidden Palace Zone underwater palette
| |
− | Pal_OOZ: BINCLUDE "art/palettes/OOZ.bin" ; Oil Ocean Zone palette
| |
− | Pal_MCZ: BINCLUDE "art/palettes/MCZ.bin" ; Mystic Cave Zone palette
| |
− | Pal_CNZ: BINCLUDE "art/palettes/CNZ.bin" ; Casino Night Zone palette
| |
− | Pal_CPZ: BINCLUDE "art/palettes/CPZ.bin" ; Chemical Plant Zone palette
| |
− | Pal_CPZ_U: BINCLUDE "art/palettes/CPZ underwater.bin" ; Chemical Plant Zone underwater palette
| |
− | Pal_DEZ: BINCLUDE "art/palettes/DEZ.bin" ; Death Egg Zone palette
| |
− | Pal_ARZ: BINCLUDE "art/palettes/ARZ.bin" ; Aquatic Ruin Zone palette
| |
− | Pal_ARZ_U: BINCLUDE "art/palettes/ARZ underwater.bin" ; Aquatic Ruin Zone underwater palette
| |
− | Pal_SCZ: BINCLUDE "art/palettes/SCZ.bin" ; Sky Chase Zone palette
| |
− | Pal_Lev11: BINCLUDE "art/palettes/Lev11.bin" ; New Level palette
| |
− | Pal_Lev12: BINCLUDE "art/palettes/Lev12.bin" ; New Level palette
| |
− | Pal_Lev13: BINCLUDE "art/palettes/Lev13.bin" ; New Level palette
| |
− | Pal_Lev14: BINCLUDE "art/palettes/Lev14.bin" ; New Level palette
| |
− | Pal_Lev15: BINCLUDE "art/palettes/Lev15.bin" ; New Level palette
| |
− | Pal_Lev16: BINCLUDE "art/palettes/Lev16.bin" ; New Level palette
| |
− | Pal_Lev17: BINCLUDE "art/palettes/Lev17.bin" ; New Level palette
| |
− | Pal_Lev18: BINCLUDE "art/palettes/Lev18.bin" ; New Level palette
| |
− | Pal_Lev19: BINCLUDE "art/palettes/Lev19.bin" ; New Level palette
| |
− | Pal_Lev1A: BINCLUDE "art/palettes/Lev1A.bin" ; New Level palette
| |
− | Pal_Lev1B: BINCLUDE "art/palettes/Lev1B.bin" ; New Level palette
| |
− | Pal_Lev1C: BINCLUDE "art/palettes/Lev1C.bin" ; New Level palette
| |
− | Pal_Lev1D: BINCLUDE "art/palettes/Lev1D.bin" ; New Level palette
| |
− | Pal_Lev1E: BINCLUDE "art/palettes/Lev1E.bin" ; New Level palette
| |
− | Pal_Lev1F: BINCLUDE "art/palettes/Lev1F.bin" ; New Level palette
| |
− | Pal_Lev20: BINCLUDE "art/palettes/Lev20.bin" ; New Level palette
| |
− | Pal_UNK2: BINCLUDE "art/palettes/Unknown 2.bin" ; Unknown palette 2
| |
− | Pal_UNK3: BINCLUDE "art/palettes/Unknown 3.bin" ; Unknown palette 3
| |
− | Pal_OOZ_B: BINCLUDE "art/palettes/OOZ Boss.bin" ; Oil Ocean Zone boss palette
| |
− | Pal_Menu: BINCLUDE "art/palettes/Menu.bin" ; Menu palette
| |
− | Pal_SS: BINCLUDE "art/palettes/Special Stage Main.bin" ; Special Stage palette
| |
− | Pal_SS1: BINCLUDE "art/palettes/Special Stage 1.bin" ; Special Stage 1 palette
| |
− | Pal_SS2: BINCLUDE "art/palettes/Special Stage 2.bin" ; Special Stage 2 palette
| |
− | Pal_SS3: BINCLUDE "art/palettes/Special Stage 3.bin" ; Special Stage 3 palette
| |
− | Pal_SS4: BINCLUDE "art/palettes/Special Stage 4.bin" ; Special Stage 4 palette
| |
− | Pal_SS5: BINCLUDE "art/palettes/Special Stage 5.bin" ; Special Stage 5 palette
| |
− | Pal_SS6: BINCLUDE "art/palettes/Special Stage 6.bin" ; Special Stage 6 palette
| |
− | Pal_SS7: BINCLUDE "art/palettes/Special Stage 7.bin" ; Special Stage 7 palette
| |
− | Pal_UNK4: BINCLUDE "art/palettes/Special Stage 1 2p.bin" ; Special Stage 1 2p palette
| |
− | Pal_UNK5: BINCLUDE "art/palettes/Special Stage 2 2p.bin" ; Special Stage 2 2p palette
| |
− | Pal_UNK6: BINCLUDE "art/palettes/Special Stage 3 2p.bin" ; Special Stage 3 2p palette
| |
− | Pal_UNK7: BINCLUDE "art/palettes/Special Stage Results Screen.bin" ; Special Stage Results Screen palette
| |
− | </asm>
| |
− |
| |
− | That inserts our new palettes, which we will be using when we start on the main level load block.
| |
− |
| |
− | ==Extending Zone Procedures and Scripts==
| |
− | Now we need to add the zone scripts.
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | PLC_DYNANM: ; Zone ID
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $00
| |
− | dc.w Animated_EHZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $01
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $02
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $03
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $04
| |
− | dc.w Animated_MTZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $05
| |
− | dc.w Animated_MTZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $06
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_HTZ-PLC_DYNANM ; $07
| |
− | dc.w Animated_HTZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $08
| |
− | dc.w Animated_OOZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $09
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $0A
| |
− | dc.w Animated_OOZ2-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $0B
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_CNZ-PLC_DYNANM ; $0C
| |
− | dc.w Animated_CNZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $0D
| |
− | dc.w Animated_CPZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Normal-PLC_DYNANM ; $0F
| |
− | dc.w Animated_DEZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_ARZ-PLC_DYNANM ; $10
| |
− | dc.w Animated_ARZ-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM ; $11
| |
− | dc.w Animated_Null-PLC_DYNANM ; yes, level $11
| |
− | </asm>
| |
− |
| |
− | and add to the end of it:
| |
− | <asm>
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− |
| |
− | dc.w Dynamic_Null-PLC_DYNANM
| |
− | dc.w Animated_Null-PLC_DYNANM
| |
− | </asm>
| |
− |
| |
− | This creates scripts for the new levels. To make complex animations (like the HPZ pulsing ball) you will need to create a Anim*level*.bin and add it to the Anim*level*.bin files and add it to the animated pattern mappings. See the section below.
| |
− |
| |
− | ==Extending Animated Pattern Mappings==
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | AnimPatMaps:
| |
− | dc.w APM16_EHZ - AnimPatMaps ; 0
| |
− | dc.w APM_Null - AnimPatMaps ; 1
| |
− | dc.w APM_Null - AnimPatMaps ; 2
| |
− | dc.w APM_Null - AnimPatMaps ; 3
| |
− | dc.w APM16_MTZ - AnimPatMaps ; 4
| |
− | dc.w APM16_MTZ - AnimPatMaps ; 5
| |
− | dc.w APM_Null - AnimPatMaps ; 6
| |
− | dc.w APM16_EHZ - AnimPatMaps ; 7
| |
− | dc.w APM_HPZ - AnimPatMaps ; 8
| |
− | dc.w APM_Null - AnimPatMaps ; 9
| |
− | dc.w APM_OOZ - AnimPatMaps ; $A
| |
− | dc.w APM_Null - AnimPatMaps ; $B
| |
− | dc.w APM_CNZ - AnimPatMaps ; $C
| |
− | dc.w APM_CPZ - AnimPatMaps ; $D
| |
− | dc.w APM_DEZ - AnimPatMaps ; $E
| |
− | dc.w APM_ARZ - AnimPatMaps ; $F
| |
− | dc.w APM_Null - AnimPatMaps ;$10
| |
− | </asm>
| |
− |
| |
− | then add this to the end
| |
− | <asm>
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | dc.w APM_Null - AnimPatMaps
| |
− | </asm>
| |
− |
| |
− | then edit and change as needed. Add the new .bin files to below here:
| |
− | <asm>
| |
− | ; byte_40372:
| |
− | APM16_EHZ: BINCLUDE "mappings/16x16/AnimEHZ.bin"
| |
− |
| |
− | ; byte_403EE:
| |
− | APM16_MTZ: BINCLUDE "mappings/16x16/AnimMTZ.bin"
| |
− |
| |
− | ; byte_404C2:
| |
− | APM_HPZ: BINCLUDE "mappings/16x16/AnimHPZ.bin"
| |
− |
| |
− | ; byte_405B6:
| |
− | APM_OOZ: BINCLUDE "mappings/16x16/AnimOOZ.bin"
| |
− |
| |
− | ; byte_4061A:
| |
− | APM_CNZ: BINCLUDE "mappings/16x16/AnimCNZ.bin"
| |
− |
| |
− | ; byte_406BE:
| |
− | APM_CNZ2P: BINCLUDE "mappings/16x16/AnimCNZ2P.bin"
| |
− |
| |
− | ; byte_40762:
| |
− | APM_CPZ: BINCLUDE "mappings/16x16/AnimCPZ.bin"
| |
− |
| |
− | ; byte_4076E:
| |
− | APM_DEZ: BINCLUDE "mappings/16x16/AnimDEZ.bin"
| |
− |
| |
− | ; byte_4077A:
| |
− | APM_ARZ: BINCLUDE "mappings/16x16/AnimARZ.bin"
| |
− |
| |
− | ; byte_407BE:
| |
− | APM_Null: dc.w 0
| |
− | </asm>
| |
− |
| |
− | and then possibly create the nessisary load queries for them. (If so, you need to know what you're doing here.)
| |
− |
| |
− | ==Extending the 1 Player and 2 Player music playlists==
| |
− | next we find:
| |
− | <asm>
| |
− | ; loc_40AE:
| |
− | Level_GetBgm:
| |
− | tst.w (Demo_mode_flag).w
| |
− | bmi.s loc_4114
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | lea MusicList(pc),a1
| |
− | tst.w (Two_player_mode).w
| |
− | beq.s Level_PlayBgm
| |
− | lea MusicList2(pc),a1
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | ; loc_40AE:
| |
− | Level_GetBgm:
| |
− | tst.w (Demo_mode_flag).w
| |
− | bmi.s loc_4114
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | lea MusicList(pc),a1
| |
− | tst.w (Two_player_mode).w
| |
− | beq.s Level_PlayBgm
| |
− | jsr Level_2PlayerBGMList
| |
− | </asm>
| |
− |
| |
− |
| |
− | now we want to find:
| |
− | <asm>
| |
− | ;----------------------------------------------------------------------------
| |
− | ; 1P Music Playlist
| |
− | ;----------------------------------------------------------------------------
| |
− | ; byte_3EA0:
| |
− | MusicList:
| |
− | dc.b 2+$80 ; 0 ; EHZ
| |
− | dc.b 2+$80 ; 1
| |
− | dc.b 5+$80 ; 2
| |
− | dc.b 4+$80 ; 3
| |
− | dc.b 5+$80 ; 4 ; MTZ1,2
| |
− | dc.b 5+$80 ; 5 ; MTZ3
| |
− | dc.b $F+$80 ; 6 ; WFZ
| |
− | dc.b 6+$80 ; 7 ; HTZ
| |
− | dc.b $10+$80 ; 8
| |
− | dc.b $D+$80 ; 9
| |
− | dc.b 4+$80 ; 10 ; OOZ
| |
− | dc.b $B+$80 ; 11 ; MCZ
| |
− | dc.b $9+$80 ; 12 ; CNZ
| |
− | dc.b $E+$80 ; 13 ; CPZ
| |
− | dc.b $A+$80 ; 14 ; DEZ
| |
− | dc.b 7+$80 ; 15 ; ARZ
| |
− | dc.b $D+$80 ; 16 ; SCZ
| |
− | dc.b 0 ; 17
| |
− | ;----------------------------------------------------------------------------
| |
− | ; 2P Music Playlist
| |
− | ;----------------------------------------------------------------------------
| |
− | ; byte_3EB2:
| |
− | MusicList2:
| |
− | dc.b $C+$80 ; 0 ; EHZ 2P
| |
− | dc.b 2+$80 ; 1
| |
− | dc.b 5+$80 ; 2
| |
− | dc.b 4+$80 ; 3
| |
− | dc.b 5+$80 ; 4
| |
− | dc.b 5+$80 ; 5
| |
− | dc.b $F+$80 ; 6
| |
− | dc.b 6+$80 ; 7
| |
− | dc.b $10+$80 ; 8
| |
− | dc.b $D+$80 ; 9
| |
− | dc.b 4+$80 ; 10
| |
− | dc.b 3+$80 ; 11 ; MCZ 2P
| |
− | dc.b 8+$80 ; 12 ; CNZ 2P
| |
− | dc.b $E+$80 ; 13
| |
− | dc.b $A+$80 ; 14
| |
− | dc.b 7+$80 ; 15
| |
− | dc.b $D+$80 ; 16
| |
− | dc.b 0 ; 17
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | ;----------------------------------------------------------------------------
| |
− | ; 2P Music Playlist
| |
− | ;----------------------------------------------------------------------------
| |
− | ; byte_3EB2:
| |
− | MusicList2:
| |
− | dc.b $C+$80 ; 00 ; EHZ 2P
| |
− | dc.b 2+$80 ; 01
| |
− | dc.b 5+$80 ; 02
| |
− | dc.b 4+$80 ; 03
| |
− | dc.b 5+$80 ; 04
| |
− | dc.b 5+$80 ; 05
| |
− | dc.b $F+$80 ; 06
| |
− | dc.b 6+$80 ; 07
| |
− | dc.b $10+$80 ; 08
| |
− | dc.b $D+$80 ; 09
| |
− | dc.b 4+$80 ; 0A
| |
− | dc.b 3+$80 ; 0B ; MCZ 2P
| |
− | dc.b 8+$80 ; 0C ; CNZ 2P
| |
− | dc.b $E+$80 ; 0D
| |
− | dc.b $A+$80 ; 0E
| |
− | dc.b 7+$80 ; 0F
| |
− | dc.b $D+$80 ; 10
| |
− | dc.b 2+$80 ; 11
| |
− | dc.b 2+$80 ; 12
| |
− | dc.b 2+$80 ; 13
| |
− | dc.b 2+$80 ; 14
| |
− | dc.b 2+$80 ; 15
| |
− | dc.b 2+$80 ; 16
| |
− | dc.b 2+$80 ; 17
| |
− | dc.b 2+$80 ; 18
| |
− | dc.b 2+$80 ; 19
| |
− | dc.b 2+$80 ; 1A
| |
− | dc.b 2+$80 ; 1B
| |
− | dc.b 2+$80 ; 1C
| |
− | dc.b 2+$80 ; 1D
| |
− | dc.b 2+$80 ; 1E
| |
− | dc.b 2+$80 ; 1F
| |
− | dc.b 2+$80 ; 20
| |
− | dc.b 0
| |
− |
| |
− | Level_2PlayerBGMList:
| |
− | lea MusicList2(pc),a1
| |
− | rts
| |
− |
| |
− | ;----------------------------------------------------------------------------
| |
− | ; 1P Music Playlist
| |
− | ;----------------------------------------------------------------------------
| |
− | ; byte_3EA0:
| |
− | MusicList:
| |
− | dc.b 2+$80 ; 00 ; EHZ
| |
− | dc.b 2+$80 ; 01
| |
− | dc.b 5+$80 ; 02
| |
− | dc.b 4+$80 ; 03
| |
− | dc.b 5+$80 ; 04 ; MTZ1,2
| |
− | dc.b 5+$80 ; 05 ; MTZ3
| |
− | dc.b $F+$80 ; 06 ; WFZ
| |
− | dc.b 6+$80 ; 07 ; HTZ
| |
− | dc.b $10+$80 ; 08
| |
− | dc.b $D+$80 ; 09
| |
− | dc.b 4+$80 ; 0A ; OOZ
| |
− | dc.b $B+$80 ; 0B ; MCZ
| |
− | dc.b $9+$80 ; 0C; CNZ
| |
− | dc.b $E+$80 ; 0D ; CPZ
| |
− | dc.b $A+$80 ; 0E ; DEZ
| |
− | dc.b 7+$80 ; 0F ; ARZ
| |
− | dc.b $D+$80 ; 10 ; SCZ
| |
− | dc.b 2+$80 ; 11
| |
− | dc.b 2+$80 ; 12
| |
− | dc.b 2+$80 ; 13
| |
− | dc.b 2+$80 ; 14
| |
− | dc.b 2+$80 ; 15
| |
− | dc.b 2+$80 ; 16
| |
− | dc.b 2+$80 ; 17
| |
− | dc.b 2+$80 ; 18
| |
− | dc.b 2+$80 ; 19
| |
− | dc.b 2+$80 ; 1A
| |
− | dc.b 2+$80 ; 1B
| |
− | dc.b 2+$80 ; 1C
| |
− | dc.b 2+$80 ; 1D
| |
− | dc.b 2+$80 ; 1E
| |
− | dc.b 2+$80 ; 1F
| |
− | dc.b 2+$80 ; 20
| |
− | dc.b 0
| |
− | </asm>
| |
− |
| |
− | That updates our music list for both 2 player and 1 player modes, and fixes an error that sometimes occurs during the build process relating to somwthing not fitting in a signed byte, which can easily happen when you have a lot of added zones.
| |
− |
| |
− |
| |
− | ==Branch fixes==
| |
− | Before we go any further, I will note that if you tried to compile now, you would have some "jump distance too big" errors, lets fix them:
| |
− |
| |
− | first, we will find:
| |
− | <asm>
| |
− | GameModesArray: ;;
| |
− | bra.w SegaScreen ; $00 SEGA screen mode
| |
− | bra.w TitleScreen ; $04 Title screen mode
| |
− | bra.w Level ; $08 Demo mode
| |
− | bra.w Level ; $0C Zone play mode
| |
− | bra.w SpecialStage ; $10 Special stage play mode
| |
− | bra.w ContinueScreen ; $14 Continue mode
| |
− | bra.w TwoPlayerResults ; $18 2P results mode
| |
− | bra.w LevelSelectMenu2P ; $1C 2P level select mode
| |
− | bra.w JmpTo_EndingSequence ; $20 End sequence mode
| |
− | bra.w OptionsMenu ; $24 Options mode
| |
− | bra.w LevelSelectMenu ; $28 Level select mode
| |
− | ; ===========================================================================
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | GameModesArray: ;;
| |
− | bra.w SegaScreen ; $00 SEGA screen mode
| |
− | bra.w TitleScreen ; $04 Title screen mode
| |
− | bra.w Level ; $08 Demo mode
| |
− | bra.w Level ; $0C Zone play mode
| |
− | bra.w SpecialStage ; $10 Special stage play mode
| |
− | bra.w ContinueScreen ; $14 Continue mode
| |
− | bra.w Jmpto_TwoPlayerResults ; $18 2P results mode
| |
− | bra.w LevelSelectMenu2P ; $1C 2P level select mode
| |
− | bra.w JmpTo_EndingSequence ; $20 End sequence mode
| |
− | bra.w OptionsMenu ; $24 Options mode
| |
− | bra.w LevelSelectMenu ; $28 Level select mode
| |
− | ; ===========================================================================
| |
− | Jmpto_TwoPlayerResults:
| |
− | jmp TwoPlayerResults
| |
− | </asm>
| |
− |
| |
− | then we we will find:
| |
− | <asm>
| |
− | MenuScreen:
| |
− | bsr.w Pal_FadeFrom
| |
− | move #$2700,sr
| |
− | move.w ($FFFFF60C).w,d0
| |
− | andi.b #-$41,d0
| |
− | move.w d0,(VDP_control_port).l
| |
− | bsr.w ClearScreen
| |
− | lea (VDP_control_port).l,a6
| |
− | move.w #$8004,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8407,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8700,(a6)
| |
− | move.w #$8C81,(a6)
| |
− | move.w #$9001,(a6)
| |
− | clearRAM Sprite_Table_Input,$400
| |
− | clearRAM Object_RAM,$2000
| |
− |
| |
− | clr.w (VDP_Command_Buffer).w
| |
− | move.l #VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
| |
− | move.l #$42000000,(VDP_control_port).l
| |
− | lea (ArtNem_FontStuff).l,a0
| |
− | bsr.w NemDec
| |
− | move.l #$4E000000,(VDP_control_port).l
| |
− | lea (ArtNem_MenuBox).l,a0
| |
− | bsr.w NemDec
| |
− | move.l #$52000000,(VDP_control_port).l
| |
− | lea (ArtNem_LevelSelectPics).l,a0
| |
− | bsr.w NemDec
| |
− | </asm>
| |
− |
| |
− | we want to change it to:
| |
− | <asm>
| |
− | MenuScreen:
| |
− | bsr.w Pal_FadeFrom
| |
− | move #$2700,sr
| |
− | move.w ($FFFFF60C).w,d0
| |
− | andi.b #-$41,d0
| |
− | move.w d0,(VDP_control_port).l
| |
− | bsr.w JumpTo_ClearScreen
| |
− | lea (VDP_control_port).l,a6
| |
− | move.w #$8004,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8407,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8700,(a6)
| |
− | move.w #$8C81,(a6)
| |
− | move.w #$9001,(a6)
| |
− | jmp Cont_MenuScreen
| |
− |
| |
− |
| |
− | JumpTo_ClearScreen:
| |
− | jmp ClearScreen
| |
− | JumpTo_NemDec000:
| |
− | jmp ClearScreen
| |
− |
| |
− | Cont_MenuScreen:
| |
− |
| |
− | clearRAM Sprite_Table_Input,$400
| |
− | clearRAM Object_RAM,$2000
| |
− |
| |
− | clr.w (VDP_Command_Buffer).w
| |
− | move.l #VDP_Command_Buffer,(VDP_Command_Buffer_Slot).w
| |
− | move.l #$42000000,(VDP_control_port).l
| |
− | lea (ArtNem_FontStuff).l,a0
| |
− | bsr.w JumpTo_NemDec000
| |
− | move.l #$4E000000,(VDP_control_port).l
| |
− | lea (ArtNem_MenuBox).l,a0
| |
− | bsr.w JumpTo_NemDec000
| |
− | move.l #$52000000,(VDP_control_port).l
| |
− | lea (ArtNem_LevelSelectPics).l,a0
| |
− | bsr.w JumpTo_NemDec000
| |
− | </asm>
| |
− |
| |
− | now we want to locate:
| |
− | <asm>
| |
− | MenuScreen_LevelSelect:
| |
− | lea (Metablock_Table).l,a1
| |
− | lea (MapEng_LevSel).l,a0
| |
− | move.w #0,d0
| |
− | bsr.w EniDec
| |
− | lea (Metablock_Table).l,a1
| |
− | move.l #$40000003,d0
| |
− | moveq #$27,d1
| |
− | moveq #$1B,d2
| |
− | bsr.w JmpTo_ShowVDPGraphics
| |
− | moveq #0,d3
| |
− | bsr.w loc_965A
| |
− | lea ($FFFF08C0).l,a1
| |
− | lea (MapEng_LevSelIcon).l,a0
| |
− | move.w #$90,d0
| |
− | bsr.w EniDec
| |
− | bsr.w loc_9688
| |
− | clr.w (Player_mode).w
| |
− | clr.w (Results_Screen_2P).w
| |
− | clr.b (Level_started_flag).w
| |
− | clr.w ($FFFFF7F0).w
| |
− | lea (word_87C6).l,a2
| |
− | bsr.w JmpTo2_Dynamic_Normal
| |
− | moveq #$26,d0
| |
− | bsr.w PalLoad1
| |
− | lea (Normal_palette_line3).w,a1
| |
− | lea (Second_palette_line3).w,a2
| |
− | moveq #7,d1
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | MenuScreen_LevelSelect:
| |
− | lea (Metablock_Table).l,a1
| |
− | lea (MapEng_LevSel).l,a0
| |
− | move.w #0,d0
| |
− | bsr.w JumpTo_EniDec
| |
− | lea (Metablock_Table).l,a1
| |
− | move.l #$40000003,d0
| |
− | moveq #$27,d1
| |
− | moveq #$1B,d2
| |
− | bsr.w JmpTo_ShowVDPGraphics
| |
− | moveq #0,d3
| |
− | bsr.w loc_965A
| |
− | lea ($FFFF08C0).l,a1
| |
− | lea (MapEng_LevSelIcon).l,a0
| |
− | move.w #$90,d0
| |
− | bsr.w JumpTo_EniDec
| |
− | bsr.w loc_9688
| |
− | clr.w (Player_mode).w
| |
− | clr.w (Results_Screen_2P).w
| |
− | clr.b (Level_started_flag).w
| |
− | clr.w ($FFFFF7F0).w
| |
− | lea (word_87C6).l,a2
| |
− | bsr.w JmpTo2_Dynamic_Normal
| |
− | moveq #$26,d0
| |
− | bsr.w PalLoad1
| |
− | lea (Normal_palette_line3).w,a1
| |
− | lea (Second_palette_line3).w,a2
| |
− | moveq #7,d1
| |
− | jmp loc_9366
| |
− |
| |
− | JumpTo_EniDec:
| |
− | jmp EniDec
| |
− | </asm>
| |
− |
| |
− | next we want to find:
| |
− | <asm>
| |
− | ; loc_8FCC:
| |
− | MenuScreen_Options:
| |
− | lea (Metablock_Table).l,a1
| |
− | lea (MapEng_Options).l,a0
| |
− | move.w #$70,d0
| |
− | bsr.w EniDec
| |
− | lea ($FFFF0160).l,a1
| |
− | lea (MapEng_Options).l,a0
| |
− | move.w #$2070,d0
| |
− | bsr.w EniDec
| |
− | clr.b (Options_menu_box).w
| |
− | bsr.w sub_9186
| |
− | addq.b #1,(Options_menu_box).w
| |
− | bsr.w loc_91F8
| |
− | addq.b #1,(Options_menu_box).w
| |
− | bsr.w loc_91F8
| |
− | clr.b (Options_menu_box).w
| |
− | clr.b (Level_started_flag).w
| |
− | clr.w ($FFFFF7F0).w
| |
− | lea (word_87C6).l,a2
| |
− | bsr.w JmpTo2_Dynamic_Normal
| |
− | moveq #$26,d0
| |
− | bsr.w PalLoad1
| |
− | move.b #-$6F,d0
| |
− | bsr.w JmpTo_PlayMusic
| |
− | clr.w (Two_player_mode).w
| |
− | clr.l (Camera_X_pos).w
| |
− | clr.l (Camera_Y_pos).w
| |
− | clr.w (Correct_cheat_entries).w
| |
− | clr.w (Correct_cheat_entries_2).w
| |
− | move.b #$16,(Delay_Time).w
| |
− | bsr.w DelayProgram
| |
− | move.w ($FFFFF60C).w,d0
| |
− | ori.b #$40,d0
| |
− | move.w d0,(VDP_control_port).l
| |
− | bsr.w Pal_FadeTo
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | MenuScreen_Options:
| |
− | lea (Metablock_Table).l,a1
| |
− | lea (MapEng_Options).l,a0
| |
− | move.w #$70,d0
| |
− | bsr.w JmpTo_EniDec
| |
− | lea ($FFFF0160).l,a1
| |
− | lea (MapEng_Options).l,a0
| |
− | move.w #$2070,d0
| |
− | bsr.w JmpTo_EniDec
| |
− | clr.b (Options_menu_box).w
| |
− | bsr.w sub_9186
| |
− | addq.b #1,(Options_menu_box).w
| |
− | bsr.w loc_91F8
| |
− | addq.b #1,(Options_menu_box).w
| |
− | bsr.w loc_91F8
| |
− | clr.b (Options_menu_box).w
| |
− | clr.b (Level_started_flag).w
| |
− | clr.w ($FFFFF7F0).w
| |
− | lea (word_87C6).l,a2
| |
− | bsr.w JmpTo2_Dynamic_Normal
| |
− | moveq #$26,d0
| |
− | bsr.w PalLoad1
| |
− | move.b #-$6F,d0
| |
− | bsr.w JmpTo_PlayMusic
| |
− | clr.w (Two_player_mode).w
| |
− | clr.l (Camera_X_pos).w
| |
− | clr.l (Camera_Y_pos).w
| |
− | clr.w (Correct_cheat_entries).w
| |
− | clr.w (Correct_cheat_entries_2).w
| |
− | move.b #$16,(Delay_Time).w
| |
− | bsr.w DelayProgram
| |
− | move.w ($FFFFF60C).w,d0
| |
− | ori.b #$40,d0
| |
− | move.w d0,(VDP_control_port).l
| |
− | bsr.w Pal_FadeTo
| |
− | </asm>
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | loc_4114:
| |
− | moveq #3,d0
| |
− | bsr.w PalLoad1 ; load Sonic's palette line
| |
− | bsr.w LevelSizeLoad
| |
− | bsr.w JmpTo_DeformBgLayer
| |
− | clr.w (Vscroll_Factor).w
| |
− | move.w #-$E0,($FFFFF61E).w
| |
− |
| |
− | clearRAM Horiz_Scroll_Buf,$400
| |
− |
| |
− | bsr.w sub_4E98
| |
− | bsr.w JmpTo_loadZoneBlockMaps
| |
− | jsr (loc_402D4).l
| |
− | bsr.w JmpTo_loc_E300
| |
− | jsr (FloorLog_Unk).l
| |
− | bsr.w LoadCollisionIndexes
| |
− | bsr.w WaterEffects
| |
− | bsr.w InitPlayers
| |
− | move.w #0,(Ctrl_1_Logical).w
| |
− | move.w #0,(Ctrl_2_Logical).w
| |
− | move.w #0,(Ctrl_1).w
| |
− | move.w #0,(Ctrl_2).w
| |
− | move.b #1,(Control_Locked).w
| |
− | move.b #1,($FFFFF7CF).w
| |
− | move.b #0,(Level_started_flag).w
| |
− | ; Level_ChkWater:
| |
− | tst.b (Water_flag).w ; does level have water?
| |
− | beq.s + ; if not, branch
| |
− | move.b #4,(Object_RAM+$380).w ; load Obj04 (water surface) at $FFFFB380
| |
− | move.w #$60,(Object_RAM+$380+x_pos).w ; set horizontal offset
| |
− | move.b #4,(Object_RAM+$3C0).w ; load Obj04 (water surface) at $FFFFB3C0
| |
− | move.w #$120,(Object_RAM+$3C0+x_pos).w ; set different horizontal offset
| |
− | +
| |
− | cmpi.b #$D,(Current_Zone).w ; check if zone == CPZ
| |
− | bne.s + ; branch if not
| |
− | move.b #$7C,(Object_RAM+$340).w ; load Obj7C (CPZ pylon) at $FFFFB340
| |
− | +
| |
− | cmpi.b #$A,(Current_Zone).w ; check if zone == OOZ
| |
− | bne.s Level_ClrHUD ; branch if not
| |
− | move.b #7,(Object_RAM+$380).w ; load Obj07 (OOZ oil) at $FFFFB380
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | loc_4114:
| |
− | moveq #3,d0
| |
− | bsr.w PalLoad1 ; load Sonic's palette line
| |
− | bsr.w JmpTo_LevelSizeLoad
| |
− | bsr.w JmpTo_DeformBgLayer
| |
− | clr.w (Vscroll_Factor).w
| |
− | move.w #-$E0,($FFFFF61E).w
| |
− |
| |
− | clearRAM Horiz_Scroll_Buf,$400
| |
− |
| |
− | bsr.w sub_4E98
| |
− | bsr.w JmpTo_loadZoneBlockMaps
| |
− | jsr (loc_402D4).l
| |
− | bsr.w JmpTo_loc_E300
| |
− | jsr (FloorLog_Unk).l
| |
− | bsr.w LoadCollisionIndexes
| |
− | bsr.w WaterEffects
| |
− | bsr.w InitPlayers
| |
− | move.w #0,(Ctrl_1_Logical).w
| |
− | move.w #0,(Ctrl_2_Logical).w
| |
− | move.w #0,(Ctrl_1).w
| |
− | move.w #0,(Ctrl_2).w
| |
− | move.b #1,(Control_Locked).w
| |
− | move.b #1,($FFFFF7CF).w
| |
− | move.b #0,(Level_started_flag).w
| |
− | ; Level_ChkWater:
| |
− | tst.b (Water_flag).w ; does level have water?
| |
− | beq.s + ; if not, branch
| |
− | move.b #4,(Object_RAM+$380).w ; load Obj04 (water surface) at $FFFFB380
| |
− | move.w #$60,(Object_RAM+$380+x_pos).w ; set horizontal offset
| |
− | move.b #4,(Object_RAM+$3C0).w ; load Obj04 (water surface) at $FFFFB3C0
| |
− | move.w #$120,(Object_RAM+$3C0+x_pos).w ; set different horizontal offset
| |
− | +
| |
− | cmpi.b #$D,(Current_Zone).w ; check if zone == CPZ
| |
− | bne.s + ; branch if not
| |
− | move.b #$7C,(Object_RAM+$340).w ; load Obj7C (CPZ pylon) at $FFFFB340
| |
− | +
| |
− | cmpi.b #$A,(Current_Zone).w ; check if zone == OOZ
| |
− | bne.s Level_ClrHUD ; branch if not
| |
− | move.b #7,(Object_RAM+$380).w ; load Obj07 (OOZ oil) at $FFFFB380
| |
− |
| |
− | JmpTo_LevelSizeLoad:
| |
− | jmp LevelSizeLoad
| |
− | </asm>
| |
− |
| |
− | Now we find:
| |
− | <asm>
| |
− | sub_9EF4:
| |
− | tst.b ($FFFFF660).w
| |
− | beq.w return_A0BE
| |
− | bsr.w Pal_FadeFrom
| |
− | lea (VDP_control_port).l,a6
| |
− | move.w #$8004,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8407,(a6)
| |
− | move.w #$9001,(a6)
| |
− | move.w #$9200,(a6)
| |
− | move.w #$8B03,(a6)
| |
− | move.w #$8700,(a6)
| |
− | clr.b (Water_move).w
| |
− | move.w #$8C81,(a6)
| |
− | bsr.w JmpTo_ClearScreen
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | JmpTo_Pal_FadeFrom:
| |
− | jmp Pal_FadeFrom
| |
− |
| |
− | sub_9EF4:
| |
− | tst.b ($FFFFF660).w
| |
− | beq.w return_A0BE
| |
− | bsr.w JmpTo_Pal_FadeFrom
| |
− | lea (VDP_control_port).l,a6
| |
− | move.w #$8004,(a6)
| |
− | move.w #$8230,(a6)
| |
− | move.w #$8407,(a6)
| |
− | move.w #$9001,(a6)
| |
− | move.w #$9200,(a6)
| |
− | move.w #$8B03,(a6)
| |
− | move.w #$8700,(a6)
| |
− | clr.b (Water_move).w
| |
− | move.w #$8C81,(a6)
| |
− | bsr.w JmpTo_ClearScreen
| |
− | </asm>
| |
− |
| |
− | now we want to find:
| |
− | <asm>
| |
− | loc_9FE6:
| |
− | bsr.w JmpTo_ClearScreen
| |
− | bsr.w sub_B262
| |
− | bsr.w Pal_FadeTo
| |
− | move.w #$18E,d0
| |
− | btst #6,(Graphics_Flags).w
| |
− | beq.s loc_A002
| |
− | move.w #$144,d0
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | loc_9FE6:
| |
− | bsr.w JmpTo_ClearScreen
| |
− | bsr.w sub_B262
| |
− | bsr.w JmpTo_Pal_FadeTo
| |
− | move.w #$18E,d0
| |
− | btst #6,(Graphics_Flags).w
| |
− | beq.s loc_A002
| |
− | move.w #$144,d0
| |
− | jmp loc_A002
| |
− |
| |
− | JmpTo_Pal_FadeTo:
| |
− | jmp Pal_FadeTo
| |
− | </asm>
| |
− |
| |
− | now we want to find:
| |
− | <asm>
| |
− | loc_A002:
| |
− | move.b #$18,(Delay_Time).w
| |
− | bsr.w DelayProgram
| |
− | dbf d0,loc_A002
| |
− | bsr.w Pal_FadeFrom
| |
− | lea (off_B2CA).l,a1
| |
− | addq.w #1,($FFFFFF4C).w
| |
− | move.w ($FFFFFF4C).w,d0
| |
− | lsl.w #2,d0
| |
− | move.l (a1,d0.w),d0
| |
− | bpl.s loc_9FE6
| |
− | bsr.w Pal_FadeFrom
| |
− | bsr.w JmpTo_ClearScreen
| |
− | </asm>
| |
− |
| |
− | and we want to to change it to:
| |
− | <asm>
| |
− | loc_A002:
| |
− | move.b #$18,(Delay_Time).w
| |
− | bsr.w DelayProgram
| |
− | dbf d0,loc_A002
| |
− | bsr.w JmpTo_Pal_FadeFrom
| |
− | lea (off_B2CA).l,a1
| |
− | addq.w #1,($FFFFFF4C).w
| |
− | move.w ($FFFFFF4C).w,d0
| |
− | lsl.w #2,d0
| |
− | move.l (a1,d0.w),d0
| |
− | bpl.s loc_9FE6
| |
− | bsr.w JmpTo_Pal_FadeFrom
| |
− | bsr.w JmpTo_ClearScreen
| |
− | </asm>
| |
− |
| |
− | now we find:
| |
− | <asm>
| |
− | bcs.s Obj17_Main
| |
− | moveq #0,d6
| |
− | ; loc_10372:
| |
− | Obj17_MakeHelix:
| |
− | bsr.w SingleObjLoad2
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | bcs.s JumpTo_Obj17_Main
| |
− | moveq #0,d6
| |
− | jmp Obj17_MakeHelix
| |
− |
| |
− | JumpTo_Obj17_Main:
| |
− | jmp Obj17_Main
| |
− | JumpTo_SingleObjLoad2:
| |
− | jmp SingleObjLoad2
| |
− |
| |
− | ; loc_10372:
| |
− | Obj17_MakeHelix:
| |
− | bsr.w JumpTo_SingleObjLoad2
| |
− | </asm>
| |
− |
| |
− | after that, your rom will build correctly for jump issues, but for addressing, that's different.
| |
− |
| |
− | ==Fixing Addressing==
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | loc_A5A6:
| |
− | bsr.s sub_A58C
| |
− | subq.w #1,objoff_3C(a0)
| |
− | bpl.s return_A5E6
| |
− | move.w #2,objoff_3C(a0)
| |
− | move.w objoff_32(a0),d0
| |
− | cmpi.w #$1C,d0
| |
− | bcc.s loc_A5E8
| |
− | addq.w #1,objoff_32(a0)
| |
− | move.w ($FFFFF750).w,d1
| |
− | move.w off_A5FC(pc,d1.w),d1
| |
− | lea off_A5FC(pc,d1.w),a1
| |
− | move.b (a1,d0.w),mapping_frame(a0)
| |
− | add.w d0,d0
| |
− | add.w d0,d0
| |
− | move.l word_A656(pc,d0.w),d1
| |
− | move.w d1,y_pos(a0)
| |
− | swap d1
| |
− | move.w d1,x_pos(a0)
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | loc_A5A6:
| |
− | bsr.s sub_A58C
| |
− | subq.w #1,objoff_3C(a0)
| |
− | bpl.s return_A5E6
| |
− | move.w #2,objoff_3C(a0)
| |
− | move.w objoff_32(a0),d0
| |
− | cmpi.w #$1C,d0
| |
− | bcc.s loc_A5E8
| |
− | addq.w #1,objoff_32(a0)
| |
− | move.w ($FFFFF750).w,d1
| |
− | move.w off_A5FC(pc,d1.w),d1
| |
− | lea off_A5FC(pc,d1.w),a1
| |
− | move.b (a1,d0.w),mapping_frame(a0)
| |
− | add.w d0,d0
| |
− | add.w d0,d0
| |
− | jmp loc2_A5A6
| |
− | </asm>
| |
− |
| |
− | Now find:
| |
− | <asm>
| |
− | loc_A6C6:
| |
− | subq.w #1,objoff_3C(a0)
| |
− | bmi.s loc_A720
| |
− | tst.b (Super_Sonic_flag).w
| |
− | beq.s return_A70A
| |
− | subq.b #1,objoff_31(a0)
| |
− | bpl.s return_A70A
| |
− | addq.b #3,objoff_31(a0)
| |
− | move.w objoff_32(a0),d0
| |
− | addq.w #4,objoff_32(a0)
| |
− | cmpi.w #$78,d0
| |
− | bcc.s return_A70A
| |
− | cmpi.w #$C,d0
| |
− | bcs.s loc_A70C
| |
− | bsr.w loc_A594
| |
− | move.l word_A766(pc,d0.w),d1
| |
− | move.w d1,y_pos(a0)
| |
− | swap d1
| |
− | move.w d1,x_pos(a0)
| |
− | lsr.w #2,d0
| |
− | move.b byte_A748(pc,d0.w),mapping_frame(a0)
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | loc_A6C6:
| |
− | subq.w #1,objoff_3C(a0)
| |
− | bmi.s loc_A720
| |
− | tst.b (Super_Sonic_flag).w
| |
− | beq.s return_A70A
| |
− | subq.b #1,objoff_31(a0)
| |
− | bpl.s return_A70A
| |
− | addq.b #3,objoff_31(a0)
| |
− | move.w objoff_32(a0),d0
| |
− | addq.w #4,objoff_32(a0)
| |
− | cmpi.w #$78,d0
| |
− | bcc.s return_A70A
| |
− | cmpi.w #$C,d0
| |
− | bcs.s loc_A70C
| |
− | bsr.w loc_A594
| |
− | jmp loc2_A6C6
| |
− | </asm>
| |
− |
| |
− | Then find:
| |
− | <asm>
| |
− | loc_A70C:
| |
− | move.l word_A766(pc,d0.w),d0
| |
− | lea (MainCharacter).w,a1 ; a1=character
| |
− | move.w d0,y_pos(a1)
| |
− | swap d0
| |
− | move.w d0,x_pos(a1)
| |
− | rts
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | loc_A70C:
| |
− | jmp loc2_A70C
| |
− | </asm>
| |
− |
| |
− | Now find:
| |
− | <asm>
| |
− | loc_285D2:
| |
− | moveq #7,d1
| |
− | moveq #0,d4
| |
− | lea (byte_28726).l,a2
| |
− | movea.l a0,a1
| |
− | move.w x_pos(a0),d2
| |
− | move.w y_pos(a0),d3
| |
− | bset #7,status(a0)
| |
− | bra.s loc_285F4
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | loc_285D2:
| |
− | moveq #7,d1
| |
− | moveq #0,d4
| |
− | jmp loc2_285D2
| |
− | </asm>
| |
− |
| |
− | Then find:
| |
− | <asm>
| |
− | loc_286A2:
| |
− | move.w d1,objoff_36(a0)
| |
− | add.w objoff_34(a0),d1
| |
− | lea byte_28726(pc,d1.w),a1
| |
− | move.b (a1)+,d0
| |
− | ext.w d0
| |
− | add.w objoff_32(a0),d0
| |
− | move.w d0,x_pos(a0)
| |
− | move.b (a1)+,d0
| |
− | ext.w d0
| |
− | add.w objoff_30(a0),d0
| |
− | move.w d0,y_pos(a0)
| |
− | move.b (a1)+,mapping_frame(a0)
| |
− | </asm>
| |
− |
| |
− | and change it to:
| |
− | <asm>
| |
− | loc_286A2:
| |
− | move.w d1,objoff_36(a0)
| |
− | add.w objoff_34(a0),d1
| |
− | jmp loc2_286A2
| |
− | </asm>
| |
− |
| |
− | Now add this to the end of your ROM:
| |
− | <asm>
| |
− | ; ===========================================================================
| |
− |
| |
− | loc2_A5A6:
| |
− | move.l word_A656(pc,d0.w),d1
| |
− | move.w d1,y_pos(a0)
| |
− | swap d1
| |
− | move.w d1,x_pos(a0)
| |
− | ; ===========================================================================
| |
− |
| |
− | word_A656:
| |
− | dc.w $A0, $70, $B0, $70, $B6, $71, $BC, $72
| |
− | dc.w $C4, $74, $C8, $75, $CA, $76, $CC, $77; 8
| |
− | dc.w $CE, $78, $D0, $79, $D2, $7A, $D4, $7B; 16
| |
− | dc.w $D6, $7C, $D9, $7E, $DC, $81, $DE, $84; 24
| |
− | dc.w $E1, $87, $E4, $8B, $E7, $8F, $EC, $94; 32
| |
− | dc.w $F0, $99, $F5, $9D, $F9, $A4, $100, $AC; 40
| |
− | dc.w $108, $B8, $112, $C4, $11F, $D3, $12C, $FA; 48
| |
− | ; ===========================================================================
| |
− |
| |
− | loc2_A6C6:
| |
− | move.l word_A766(pc,d0.w),d1
| |
− | move.w d1,y_pos(a0)
| |
− | swap d1
| |
− | move.w d1,x_pos(a0)
| |
− | lsr.w #2,d0
| |
− | move.b byte_A748(pc,d0.w),mapping_frame(a0)
| |
− | ; ===========================================================================
| |
− |
| |
− | loc2_A70C:
| |
− | move.l word_A766(pc,d0.w),d0
| |
− | lea (MainCharacter).w,a1 ; a1=character
| |
− | move.w d0,y_pos(a1)
| |
− | swap d0
| |
− | move.w d0,x_pos(a1)
| |
− | rts
| |
− | ; ===========================================================================
| |
− |
| |
− | byte_A748:
| |
− | dc.b $12,$12,$12,$12,$12,$12,$12,$13,$13,$13,$13,$13,$13,$14,$14,$14
| |
− | dc.b $14,$15,$15,$15,$16,$16,$16,$16,$16,$16,$16,$16,$16, 0; 16
| |
− | ; ===========================================================================
| |
− |
| |
− | word_A766:
| |
− | dc.w $C0
| |
− | dc.w $90 ; 1
| |
− | dc.w $B0 ; 2
| |
− | dc.w $91 ; 3
| |
− | dc.w $A8 ; 4
| |
− | dc.w $92 ; 5
| |
− | dc.w $9B ; 6
| |
− | dc.w $96 ; 7
| |
− | dc.w $99 ; 8
| |
− | dc.w $98 ; 9
| |
− | dc.w $98 ; 10
| |
− | dc.w $99 ; 11
| |
− | dc.w $99 ; 12
| |
− | dc.w $9A ; 13
| |
− | dc.w $9B ; 14
| |
− | dc.w $9C ; 15
| |
− | dc.w $9F ; 16
| |
− | dc.w $9E ; 17
| |
− | dc.w $A4 ; 18
| |
− | dc.w $A0 ; 19
| |
− | dc.w $AC ; 20
| |
− | dc.w $A2 ; 21
| |
− | dc.w $B7 ; 22
| |
− | dc.w $A5 ; 23
| |
− | dc.w $C4 ; 24
| |
− | dc.w $A8 ; 25
| |
− | dc.w $D3 ; 26
| |
− | dc.w $AB ; 27
| |
− | dc.w $DE ; 28
| |
− | dc.w $AE ; 29
| |
− | dc.w $E8 ; 30
| |
− | dc.w $B0 ; 31
| |
− | dc.w $EF ; 32
| |
− | dc.w $B2 ; 33
| |
− | dc.w $F4 ; 34
| |
− | dc.w $B5 ; 35
| |
− | dc.w $F9 ; 36
| |
− | dc.w $B8 ; 37
| |
− | dc.w $FC ; 38
| |
− | dc.w $BB ; 39
| |
− | dc.w $FE ; 40
| |
− | dc.w $BE ; 41
| |
− | dc.w $FF ; 42
| |
− | dc.w $C0 ; 43
| |
− | dc.w $100 ; 44
| |
− | dc.w $C2 ; 45
| |
− | dc.w $101 ; 46
| |
− | dc.w $C5 ; 47
| |
− | dc.w $102 ; 48
| |
− | dc.w $C8 ; 49
| |
− | dc.w $102 ; 50
| |
− | dc.w $CC ; 51
| |
− | dc.w $101 ; 52
| |
− | dc.w $D1 ; 53
| |
− | dc.w $FD ; 54
| |
− | dc.w $D7 ; 55
| |
− | dc.w $F9 ; 56
| |
− | dc.w $DE ; 57
| |
− | dc.w $F9 ; 58
| |
− | dc.w $118 ; 59
| |
− | ; ===========================================================================
| |
− |
| |
− | loc2_285D2:
| |
− | lea (byte_28726).l,a2
| |
− | movea.l a0,a1
| |
− | move.w x_pos(a0),d2
| |
− | move.w y_pos(a0),d3
| |
− | bset #7,status(a0)
| |
− | bra.s JmpTo_loc_285F4
| |
− |
| |
− | JmpTo_loc_285F4
| |
− | jmp loc_285F4
| |
− | ; ===========================================================================
| |
− |
| |
− | loc2_286A2
| |
− | lea byte_28726(pc,d1.w),a1 ; addressing not needed
| |
− | move.b (a1)+,d0
| |
− | ext.w d0
| |
− | add.w objoff_32(a0),d0
| |
− | move.w d0,x_pos(a0)
| |
− | move.b (a1)+,d0
| |
− | ext.w d0
| |
− | add.w objoff_30(a0),d0
| |
− | move.w d0,y_pos(a0)
| |
− | move.b (a1)+,mapping_frame(a0)
| |
− | ; ===========================================================================
| |
− |
| |
− | byte_28726:
| |
− | dc.b 0,$B8, 0,$32,$CE, 4,$48, 0, 8,$32,$32, $C, 0,$48,$10,$CE; 16
| |
− | dc.b $32,$14,$B8, 0,$18,$CE,$CE,$1C, $D,$B8, 1,$3F,$DA, 5,$48, $C; 32
| |
− | dc.b 9,$27,$3C, $D,$F3,$48,$11,$C1,$26,$15,$B8,$F4,$19,$D9,$C4,$1D; 48
| |
− | dc.b $19,$BC, 2,$46,$E9, 6,$46,$17, $A,$19,$44, $E,$E7,$44,$12,$BA; 64
| |
− | dc.b $17,$16,$BA,$E9,$1A,$E7,$BC,$1E,$27,$C4, 3,$48,$F4, 7,$3F,$26; 80
| |
− | dc.b $B, $D,$48, $F,$D9,$3C,$13,$B8, $C,$17,$C1,$DA,$1B,$F3,$B8,$1F; 96
| |
− | ; ===========================================================================
| |
− | </asm>
| |
− |
| |
− | Then delete any index pasted here to prevent a double defined error while building.
| |
− |
| |
− | ==Extending the demo list==
| |
− | now we will prepare everything so that we can put in new demo files for our new levels.
| |
− |
| |
− | find:
| |
− | <asm>; off_4948:
| |
− | DemoScriptPointers:
| |
− | dc.l Demo_EHZ ; $00
| |
− | dc.l Demo_EHZ ; $01
| |
− | dc.l Demo_EHZ ; $02
| |
− | dc.l Demo_EHZ ; $03
| |
− | dc.l Demo_EHZ ; $04
| |
− | dc.l Demo_EHZ ; $05
| |
− | dc.l Demo_EHZ ; $06
| |
− | dc.l Demo_EHZ ; $07
| |
− | dc.l Demo_EHZ ; $08
| |
− | dc.l Demo_EHZ ; $09
| |
− | dc.l Demo_EHZ ; $0A
| |
− | dc.l Demo_EHZ ; $0B
| |
− | dc.l Demo_CNZ ; $0C
| |
− | dc.l Demo_CPZ ; $0D
| |
− | dc.l Demo_EHZ ; $0E
| |
− | dc.l Demo_ARZ ; $0F
| |
− | dc.l Demo_EHZ ; $10
| |
− | </asm>
| |
− |
| |
− | and insert after it:
| |
− | <asm>
| |
− | dc.l Demo_EHZ ; $11
| |
− | dc.l Demo_EHZ ; $12
| |
− | dc.l Demo_EHZ ; $13
| |
− | dc.l Demo_EHZ ; $14
| |
− | dc.l Demo_EHZ ; $15
| |
− | dc.l Demo_EHZ ; $16
| |
− | dc.l Demo_EHZ ; $17
| |
− | dc.l Demo_EHZ ; $18
| |
− | dc.l Demo_EHZ ; $19
| |
− | dc.l Demo_EHZ ; $1A
| |
− | dc.l Demo_EHZ ; $1B
| |
− | dc.l Demo_EHZ ; $1C
| |
− | dc.l Demo_EHZ ; $1D
| |
− | dc.l Demo_EHZ ; $1E
| |
− | dc.l Demo_EHZ ; $1F
| |
− | dc.l Demo_EHZ ; $20
| |
− | </asm>
| |
− |
| |
− | ==Extending the Collision index==
| |
− | You would want solidity in your new zones, wouldn't you? Here we will extend the solidity list so that our extra levels can have solid ground for that blue hedgehog to walk on.
| |
− |
| |
− | lets start off by extending the primary collision index. find:
| |
− | <asm>
| |
− | Off_ColP:
| |
− | dc.l ColP_EHZHTZ
| |
− | dc.l Off_Level ; 1
| |
− | dc.l ColP_MTZ ; 2
| |
− | dc.l Off_Level ; 3
| |
− | dc.l ColP_MTZ ; 4
| |
− | dc.l ColP_MTZ ; 5
| |
− | dc.l ColP_WFZSCZ ; 6
| |
− | dc.l ColP_EHZHTZ ; 7
| |
− | dc.l ColP_OOZ ; 8
| |
− | dc.l Off_Level ; 9
| |
− | dc.l ColP_OOZ ; 10
| |
− | dc.l ColP_MCZ ; 11
| |
− | dc.l ColP_CNZ ; 12
| |
− | dc.l ColP_CPZDEZ ; 13
| |
− | dc.l ColP_CPZDEZ ; 14
| |
− | dc.l ColP_ARZ ; 15
| |
− | dc.l ColP_WFZSCZ ; 16
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | Off_ColP:
| |
− | dc.l ColP_EHZHTZ ;00
| |
− | dc.l ColP_EHZHTZ ;01
| |
− | dc.l ColP_MTZ ;02
| |
− | dc.l ColP_MTZ ;03
| |
− | dc.l ColP_MTZ ;04
| |
− | dc.l ColP_MTZ ;05
| |
− | dc.l ColP_WFZSCZ ;06
| |
− | dc.l ColP_EHZHTZ ;07
| |
− | dc.l ColP_OOZ ;08
| |
− | dc.l ColP_OOZ ;09
| |
− | dc.l ColP_OOZ ;0A
| |
− | dc.l ColP_MCZ ;0B
| |
− | dc.l ColP_CNZ ;0C
| |
− | dc.l ColP_CPZDEZ ;0D
| |
− | dc.l ColP_CPZDEZ ;0E
| |
− | dc.l ColP_ARZ ;0F
| |
− | dc.l ColP_WFZSCZ ;10
| |
− | dc.l ColP_Lev11 ;11
| |
− | dc.l ColP_Lev12 ;12
| |
− | dc.l ColP_Lev13 ;13
| |
− | dc.l ColP_Lev14 ;14
| |
− | dc.l ColP_Lev15 ;15
| |
− | dc.l ColP_Lev16 ;16
| |
− | dc.l ColP_Lev17 ;17
| |
− | dc.l ColP_Lev18 ;18
| |
− | dc.l ColP_Lev19 ;19
| |
− | dc.l ColP_Lev1A ;1A
| |
− | dc.l ColP_Lev1B ;1B
| |
− | dc.l ColP_Lev1C ;1C
| |
− | dc.l ColP_Lev1D ;1D
| |
− | dc.l ColP_Lev1E ;1E
| |
− | dc.l ColP_Lev1F ;1F
| |
− | dc.l ColP_Lev20 ;20
| |
− | </asm>
| |
− |
| |
− | now we will extend the secondary collision index. find:
| |
− | <asm>
| |
− | Off_ColS:
| |
− | dc.l ColS_EHZHTZ
| |
− | dc.l Off_Level ; 1
| |
− | dc.l ColP_MTZ ; 2
| |
− | dc.l Off_Level ; 3
| |
− | dc.l ColP_MTZ ; 4
| |
− | dc.l ColP_MTZ ; 5
| |
− | dc.l ColS_WFZSCZ ; 6
| |
− | dc.l ColS_EHZHTZ ; 7
| |
− | dc.l ColP_OOZ ; 8
| |
− | dc.l Off_Level ; 9
| |
− | dc.l ColP_OOZ ; 10
| |
− | dc.l ColP_MCZ ; 11
| |
− | dc.l ColS_CNZ ; 12
| |
− | dc.l ColS_CPZDEZ ; 13
| |
− | dc.l ColS_CPZDEZ ; 14
| |
− | dc.l ColS_ARZ ; 15
| |
− | dc.l ColS_WFZSCZ ; 16
| |
− | </asm>
| |
− |
| |
− | we will replace it with:
| |
− | <asm>
| |
− | Off_ColS:
| |
− | dc.l ColS_EHZHTZ ;00
| |
− | dc.l ColP_EHZHTZ ;01
| |
− | dc.l ColP_MTZ ;02
| |
− | dc.l Off_Level ;03
| |
− | dc.l ColP_MTZ ;04
| |
− | dc.l ColP_MTZ ;05
| |
− | dc.l ColS_WFZSCZ ;06
| |
− | dc.l ColS_EHZHTZ ;07
| |
− | dc.l ColP_OOZ ;08
| |
− | dc.l Off_Level ;09
| |
− | dc.l ColP_OOZ ;0A
| |
− | dc.l ColP_MCZ ;0B
| |
− | dc.l ColS_CNZ ;0C
| |
− | dc.l ColS_CPZDEZ ;0D
| |
− | dc.l ColS_CPZDEZ ;0E
| |
− | dc.l ColS_ARZ ;0F
| |
− | dc.l ColS_WFZSCZ ;10
| |
− | dc.l ColS_Lev11 ;11
| |
− | dc.l ColS_Lev12 ;12
| |
− | dc.l ColS_Lev13 ;13
| |
− | dc.l ColS_Lev14 ;14
| |
− | dc.l ColS_Lev15 ;15
| |
− | dc.l ColS_Lev16 ;16
| |
− | dc.l ColS_Lev17 ;17
| |
− | dc.l ColS_Lev18 ;18
| |
− | dc.l ColS_Lev19 ;19
| |
− | dc.l ColS_Lev1A ;1A
| |
− | dc.l ColS_Lev1B ;1B
| |
− | dc.l ColS_Lev1C ;1C
| |
− | dc.l ColS_Lev1D ;1D
| |
− | dc.l ColS_Lev1E ;1E
| |
− | dc.l ColS_Lev1F ;1F
| |
− | dc.l ColS_Lev20 ;20
| |
− | </asm>
| |
− |
| |
− | Now, in order to fix a bug that makes collision swaps more buggy than a savestate loaded from another game, we need to do some splitting and moving.
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | LoadCollisionIndexes:
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | lsl.w #2,d0
| |
− | move.l #Primary_Collision,(Collision_addr).w
| |
− | move.w d0,-(sp)
| |
− | movea.l Off_ColP(pc,d0.w),a0
| |
− | lea (Primary_Collision).w,a1
| |
− | bsr.w KosDec
| |
− | move.w (sp)+,d0
| |
− | movea.l Off_ColS(pc,d0.w),a0
| |
− | lea (Secondary_Collision).w,a1
| |
− | bra.w KosDec
| |
− | </asm>
| |
− |
| |
− | and replace it with:
| |
− | <asm>
| |
− | moveq #0,d0
| |
− | move.b (Current_Zone).w,d0
| |
− | lsl.w #2,d0
| |
− | move.l #Primary_Collision,(Collision_addr).w
| |
− | move.w d0,-(sp)
| |
− | movea.l Off_ColP(pc,d0.w),a0
| |
− | lea (Primary_Collision).w,a1
| |
− | bsr.w KosDec
| |
− | move.w (sp)+,d0
| |
− | jsr LoadSecondaryCollisionIndexes
| |
− | </asm>
| |
− |
| |
− | Then go to the end of the ROM and add the following:
| |
− | <asm>
| |
− | LoadSecondaryCollisionIndexes:
| |
− | movea.l Off_ColS(pc,d0.w),a0
| |
− | lea (Secondary_Collision).w,a1
| |
− | bra.w JmpTo3_KosDec
| |
− |
| |
− | JmpTo3_KosDec:
| |
− | jmp KosDec
| |
− | </asm>
| |
− |
| |
− | then Off_ColS index directly below that location.
| |
− |
| |
− | next we need to define the symbols (duh). find:
| |
− | <asm>
| |
− | ; WFZ/SCZ secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_WFZSCZ: BINCLUDE "collision/WFZ and SCZ secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | </asm>
| |
− | and we will insert the new collision entries after that as follows:
| |
− | <asm>
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev11: BINCLUDE "collision/Lev11 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev11: BINCLUDE "collision/Lev11 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev12: BINCLUDE "collision/Lev12 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev12: BINCLUDE "collision/Lev12 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev13: BINCLUDE "collision/Lev13 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev13: BINCLUDE "collision/Lev13 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev14: BINCLUDE "collision/Lev14 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev14: BINCLUDE "collision/Lev14 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev15: BINCLUDE "collision/Lev15 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev15: BINCLUDE "collision/Lev15 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev16: BINCLUDE "collision/Lev16 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev16: BINCLUDE "collision/Lev16 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev17: BINCLUDE "collision/Lev17 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev17: BINCLUDE "collision/Lev17 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev18: BINCLUDE "collision/Lev18 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev18: BINCLUDE "collision/Lev18 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev19: BINCLUDE "collision/Lev19 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev19: BINCLUDE "collision/Lev19 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1A: BINCLUDE "collision/Lev1A primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1A: BINCLUDE "collision/Lev1A secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1B: BINCLUDE "collision/Lev1B primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1B: BINCLUDE "collision/Lev1B secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1C: BINCLUDE "collision/Lev1C primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1C: BINCLUDE "collision/Lev1C secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1D: BINCLUDE "collision/Lev1D primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1D: BINCLUDE "collision/Lev1D secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1E: BINCLUDE "collision/Lev1E primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1E: BINCLUDE "collision/Lev1E secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev1F: BINCLUDE "collision/Lev1F primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev1F: BINCLUDE "collision/Lev1F secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level primary 16x16 collision index (Kozinski compression)
| |
− | ColP_Lev20: BINCLUDE "collision/Lev20 primary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; new level secondary 16x16 collision index (Kozinski compression)
| |
− | ColS_Lev20: BINCLUDE "collision/Lev20 secondary 16x16 collision index.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | </asm>
| |
− |
| |
− | ==Extending Rings Index==
| |
− | Now we add rings to our new levels.
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | Off_Rings:
| |
− | dc.w Rings_EHZ_1 - Off_Rings ; 0 $00
| |
− | dc.w Rings_EHZ_2 - Off_Rings ; 1
| |
− | dc.w Rings_Lev1_1 - Off_Rings ; 2 $01
| |
− | dc.w Rings_Lev1_2 - Off_Rings ; 3
| |
− | dc.w Rings_Lev2_1 - Off_Rings ; 4 $02
| |
− | dc.w Rings_Lev2_2 - Off_Rings ; 5
| |
− | dc.w Rings_Lev3_1 - Off_Rings ; 6 $03
| |
− | dc.w Rings_Lev3_2 - Off_Rings ; 7
| |
− | dc.w Rings_MTZ_1 - Off_Rings ; 8 $04
| |
− | dc.w Rings_MTZ_2 - Off_Rings ; 9
| |
− | dc.w Rings_MTZ_3 - Off_Rings ; 10 $05
| |
− | dc.w Rings_MTZ_4 - Off_Rings ; 11
| |
− | dc.w Rings_WFZ_1 - Off_Rings ; 12 $06
| |
− | dc.w Rings_WFZ_2 - Off_Rings ; 13
| |
− | dc.w Rings_HTZ_1 - Off_Rings ; 14 $07
| |
− | dc.w Rings_HTZ_2 - Off_Rings ; 15
| |
− | dc.w Rings_HPZ_1 - Off_Rings ; 16 $08
| |
− | dc.w Rings_HPZ_2 - Off_Rings ; 17
| |
− | dc.w Rings_Lev9_1 - Off_Rings ; 18 $09
| |
− | dc.w Rings_Lev9_2 - Off_Rings ; 19
| |
− | dc.w Rings_OOZ_1 - Off_Rings ; 20 $0A
| |
− | dc.w Rings_OOZ_2 - Off_Rings ; 21
| |
− | dc.w Rings_MCZ_1 - Off_Rings ; 22 $0B
| |
− | dc.w Rings_MCZ_2 - Off_Rings ; 23
| |
− | dc.w Rings_CNZ_1 - Off_Rings ; 24 $0C
| |
− | dc.w Rings_CNZ_2 - Off_Rings ; 25
| |
− | dc.w Rings_CPZ_1 - Off_Rings ; 26 $0D
| |
− | dc.w Rings_CPZ_2 - Off_Rings ; 27
| |
− | dc.w Rings_DEZ_1 - Off_Rings ; 28 $0E
| |
− | dc.w Rings_DEZ_2 - Off_Rings ; 29
| |
− | dc.w Rings_ARZ_1 - Off_Rings ; 30 $0F
| |
− | dc.w Rings_ARZ_2 - Off_Rings ; 31
| |
− | dc.w Rings_SCZ_1 - Off_Rings ; 32 $10
| |
− | dc.w Rings_SCZ_2 - Off_Rings ; 33
| |
− | </asm>
| |
− |
| |
− | and add this to the end:
| |
− | <asm>
| |
− | dc.w Rings_Lev_11_1 - Off_Rings ; 34 $11
| |
− | dc.w Rings_Lev_11_2 - Off_Rings ; 35
| |
− | dc.w Rings_Lev_12_1 - Off_Rings ; 36 $12
| |
− | dc.w Rings_Lev_12_2 - Off_Rings ; 37
| |
− | dc.w Rings_Lev_13_1 - Off_Rings ; 38 $13
| |
− | dc.w Rings_Lev_13_2 - Off_Rings ; 39
| |
− | dc.w Rings_Lev_14_1 - Off_Rings ; 40 $14
| |
− | dc.w Rings_Lev_14_2 - Off_Rings ; 41
| |
− | dc.w Rings_Lev_15_1 - Off_Rings ; 42 $15
| |
− | dc.w Rings_Lev_15_2 - Off_Rings ; 43
| |
− | dc.w Rings_Lev_16_1 - Off_Rings ; 44 $16
| |
− | dc.w Rings_Lev_16_2 - Off_Rings ; 45
| |
− | dc.w Rings_Lev_17_1 - Off_Rings ; 46 $17
| |
− | dc.w Rings_Lev_17_2 - Off_Rings ; 47
| |
− | dc.w Rings_Lev_18_1 - Off_Rings ; 48 $18
| |
− | dc.w Rings_Lev_18_2 - Off_Rings ; 49
| |
− | dc.w Rings_Lev_19_1 - Off_Rings ; 50 $19
| |
− | dc.w Rings_Lev_19_2 - Off_Rings ; 51
| |
− | dc.w Rings_Lev_1A_1 - Off_Rings ; 52 $1A
| |
− | dc.w Rings_Lev_1A_2 - Off_Rings ; 53
| |
− | dc.w Rings_Lev_1B_1 - Off_Rings ; 54 $1B
| |
− | dc.w Rings_Lev_1B_2 - Off_Rings ; 55
| |
− | dc.w Rings_Lev_1C_1 - Off_Rings ; 56 $1C
| |
− | dc.w Rings_Lev_1C_2 - Off_Rings ; 57
| |
− | dc.w Rings_Lev_1D_1 - Off_Rings ; 58 $1D
| |
− | dc.w Rings_Lev_1D_2 - Off_Rings ; 59
| |
− | dc.w Rings_Lev_1E_1 - Off_Rings ; 60 $1E
| |
− | dc.w Rings_Lev_1E_2 - Off_Rings ; 61
| |
− | dc.w Rings_Lev_1F_1 - Off_Rings ; 62 $1F
| |
− | dc.w Rings_Lev_1F_2 - Off_Rings ; 63
| |
− | dc.w Rings_Lev_20_1 - Off_Rings ; 64 $20
| |
− | dc.w Rings_Lev_20_2 - Off_Rings ; 65
| |
− | </asm>
| |
− |
| |
− | Now find:
| |
− | <asm>
| |
− | Rings_EHZ_1: BINCLUDE "level/rings/EHZ_1.bin"
| |
− | Rings_EHZ_2: BINCLUDE "level/rings/EHZ_2.bin"
| |
− | Rings_Lev1_1: BINCLUDE "level/rings/01_1.bin"
| |
− | Rings_Lev1_2: BINCLUDE "level/rings/01_2.bin"
| |
− | Rings_Lev2_1: BINCLUDE "level/rings/02_1.bin"
| |
− | Rings_Lev2_2: BINCLUDE "level/rings/02_2.bin"
| |
− | Rings_Lev3_1: BINCLUDE "level/rings/03_1.bin"
| |
− | Rings_Lev3_2: BINCLUDE "level/rings/03_2.bin"
| |
− | Rings_MTZ_1: BINCLUDE "level/rings/MTZ_1.bin"
| |
− | Rings_MTZ_2: BINCLUDE "level/rings/MTZ_2.bin"
| |
− | Rings_MTZ_3: BINCLUDE "level/rings/MTZ_3.bin"
| |
− | Rings_MTZ_4: BINCLUDE "level/rings/MTZ_4.bin"
| |
− | Rings_HTZ_1: BINCLUDE "level/rings/HTZ_1.bin"
| |
− | Rings_HTZ_2: BINCLUDE "level/rings/HTZ_2.bin"
| |
− | Rings_HPZ_1: BINCLUDE "level/rings/HPZ_1.bin"
| |
− | Rings_HPZ_2: BINCLUDE "level/rings/HPZ_2.bin"
| |
− | Rings_Lev9_1: BINCLUDE "level/rings/09_1.bin"
| |
− | Rings_Lev9_2: BINCLUDE "level/rings/09_2.bin"
| |
− | Rings_OOZ_1: BINCLUDE "level/rings/OOZ_1.bin"
| |
− | Rings_OOZ_2: BINCLUDE "level/rings/OOZ_2.bin"
| |
− | Rings_MCZ_1: BINCLUDE "level/rings/MCZ_1.bin"
| |
− | Rings_MCZ_2: BINCLUDE "level/rings/MCZ_2.bin"
| |
− | Rings_CNZ_1: BINCLUDE "level/rings/CNZ_1.bin"
| |
− | Rings_CNZ_2: BINCLUDE "level/rings/CNZ_2.bin"
| |
− | Rings_CPZ_1: BINCLUDE "level/rings/CPZ_1.bin"
| |
− | Rings_CPZ_2: BINCLUDE "level/rings/CPZ_2.bin"
| |
− | Rings_DEZ_1: BINCLUDE "level/rings/DEZ_1.bin"
| |
− | Rings_DEZ_2: BINCLUDE "level/rings/DEZ_2.bin"
| |
− | Rings_WFZ_1: BINCLUDE "level/rings/WFZ_1.bin"
| |
− | Rings_WFZ_2: BINCLUDE "level/rings/WFZ_2.bin"
| |
− | Rings_ARZ_1: BINCLUDE "level/rings/ARZ_1.bin"
| |
− | Rings_ARZ_2: BINCLUDE "level/rings/ARZ_2.bin"
| |
− | Rings_SCZ_1: BINCLUDE "level/rings/SCZ_1.bin"
| |
− | Rings_SCZ_2: BINCLUDE "level/rings/SCZ_2.bin"
| |
− | </asm>
| |
− |
| |
− | and add this to the end:
| |
− | <asm>
| |
− | Rings_Lev_11_1: BINCLUDE "level/rings/Lev_11_1.bin"
| |
− | Rings_Lev_11_2: BINCLUDE "level/rings/Lev_11_2.bin"
| |
− | Rings_Lev_12_1: BINCLUDE "level/rings/Lev_12_1.bin"
| |
− | Rings_Lev_12_2: BINCLUDE "level/rings/Lev_12_2.bin"
| |
− | Rings_Lev_13_1: BINCLUDE "level/rings/Lev_13_1.bin"
| |
− | Rings_Lev_13_2: BINCLUDE "level/rings/Lev_13_2.bin"
| |
− | Rings_Lev_14_1: BINCLUDE "level/rings/Lev_14_1.bin"
| |
− | Rings_Lev_14_2: BINCLUDE "level/rings/Lev_14_2.bin"
| |
− | Rings_Lev_15_1: BINCLUDE "level/rings/Lev_15_1.bin"
| |
− | Rings_Lev_15_2: BINCLUDE "level/rings/Lev_15_2.bin"
| |
− | Rings_Lev_16_1: BINCLUDE "level/rings/Lev_16_1.bin"
| |
− | Rings_Lev_16_2: BINCLUDE "level/rings/Lev_16_2.bin"
| |
− | Rings_Lev_17_1: BINCLUDE "level/rings/Lev_17_1.bin"
| |
− | Rings_Lev_17_2: BINCLUDE "level/rings/Lev_17_2.bin"
| |
− | Rings_Lev_18_1: BINCLUDE "level/rings/Lev_18_1.bin"
| |
− | Rings_Lev_18_2: BINCLUDE "level/rings/Lev_18_2.bin"
| |
− | Rings_Lev_19_1: BINCLUDE "level/rings/Lev_19_1.bin"
| |
− | Rings_Lev_19_2: BINCLUDE "level/rings/Lev_19_2.bin"
| |
− | Rings_Lev_1A_1: BINCLUDE "level/rings/Lev_1A_1.bin"
| |
− | Rings_Lev_1A_2: BINCLUDE "level/rings/Lev_1A_2.bin"
| |
− | Rings_Lev_1B_1: BINCLUDE "level/rings/Lev_1B_1.bin"
| |
− | Rings_Lev_1B_2: BINCLUDE "level/rings/Lev_1B_2.bin"
| |
− | Rings_Lev_1C_1: BINCLUDE "level/rings/Lev_1C_1.bin"
| |
− | Rings_Lev_1C_2: BINCLUDE "level/rings/Lev_1C_2.bin"
| |
− | Rings_Lev_1D_1: BINCLUDE "level/rings/Lev_1D_1.bin"
| |
− | Rings_Lev_1D_2: BINCLUDE "level/rings/Lev_1D_2.bin"
| |
− | Rings_Lev_1E_1: BINCLUDE "level/rings/Lev_1E_1.bin"
| |
− | Rings_Lev_1E_2: BINCLUDE "level/rings/Lev_1E_2.bin"
| |
− | Rings_Lev_1F_1: BINCLUDE "level/rings/Lev_1F_1.bin"
| |
− | Rings_Lev_1F_2: BINCLUDE "level/rings/Lev_1F_2.bin"
| |
− | Rings_Lev_20_1: BINCLUDE "level/rings/Lev_20_1.bin"
| |
− | Rings_Lev_20_2: BINCLUDE "level/rings/Lev_20_2.bin"
| |
− | </asm>
| |
− |
| |
− | Create the necessary blank files then edit them as needed.
| |
− |
| |
− | ==Extending the object index==
| |
− | This is similar to extending the ring index.
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | Off_Objects:
| |
− | dc.w Objects_EHZ_1 - Off_Objects ; 0 $00
| |
− | dc.w Objects_EHZ_2 - Off_Objects ; 1
| |
− | dc.w Objects_Null3 - Off_Objects ; 2 $01
| |
− | dc.w Objects_Null3 - Off_Objects ; 3
| |
− | dc.w Objects_Null3 - Off_Objects ; 4 $02
| |
− | dc.w Objects_Null3 - Off_Objects ; 5
| |
− | dc.w Objects_Null3 - Off_Objects ; 6 $03
| |
− | dc.w Objects_Null3 - Off_Objects ; 7
| |
− | dc.w Objects_MTZ_1 - Off_Objects ; 8 $04
| |
− | dc.w Objects_MTZ_2 - Off_Objects ; 9
| |
− | dc.w Objects_MTZ_3 - Off_Objects ; 10 $05
| |
− | dc.w Objects_MTZ_3 - Off_Objects ; 11
| |
− | dc.w Objects_WFZ_1 - Off_Objects ; 12 $06
| |
− | dc.w Objects_WFZ_2 - Off_Objects ; 13
| |
− | dc.w Objects_HTZ_1 - Off_Objects ; 14 $07
| |
− | dc.w Objects_HTZ_2 - Off_Objects ; 15
| |
− | dc.w Objects_HPZ_1 - Off_Objects ; 16 $08
| |
− | dc.w Objects_HPZ_2 - Off_Objects ; 17
| |
− | dc.w Objects_Null3 - Off_Objects ; 18 $09
| |
− | dc.w Objects_Null3 - Off_Objects ; 19
| |
− | dc.w Objects_OOZ_1 - Off_Objects ; 20 $0A
| |
− | dc.w Objects_OOZ_2 - Off_Objects ; 21
| |
− | dc.w Objects_MCZ_1 - Off_Objects ; 22 $0B
| |
− | dc.w Objects_MCZ_2 - Off_Objects ; 23
| |
− | dc.w Objects_CNZ_1 - Off_Objects ; 24 $0C
| |
− | dc.w Objects_CNZ_2 - Off_Objects ; 25
| |
− | dc.w Objects_CPZ_1 - Off_Objects ; 26 $0D
| |
− | dc.w Objects_CPZ_2 - Off_Objects ; 27
| |
− | dc.w Objects_DEZ_1 - Off_Objects ; 28 $0E
| |
− | dc.w Objects_DEZ_2 - Off_Objects ; 29
| |
− | dc.w Objects_ARZ_1 - Off_Objects ; 30 $0F
| |
− | dc.w Objects_ARZ_2 - Off_Objects ; 31
| |
− | dc.w Objects_SCZ_1 - Off_Objects ; 32 $10
| |
− | dc.w Objects_SCZ_2 - Off_Objects ; 33
| |
− | </asm>
| |
− |
| |
− | then add this to the end:
| |
− | <asm>
| |
− | dc.w Objects_Lev_11_1 - Off_Objects ; 34 $11
| |
− | dc.w Objects_Lev_11_2 - Off_Objects ; 35
| |
− | dc.w Objects_Lev_12_1 - Off_Objects ; 36 $12
| |
− | dc.w Objects_Lev_12_2 - Off_Objects ; 17
| |
− | dc.w Objects_Lev_13_1 - Off_Objects ; 38 $13
| |
− | dc.w Objects_Lev_13_2 - Off_Objects ; 39
| |
− | dc.w Objects_Lev_14_1 - Off_Objects ; 40 $14
| |
− | dc.w Objects_Lev_14_2 - Off_Objects ; 41
| |
− | dc.w Objects_Lev_15_1 - Off_Objects ; 42 $15
| |
− | dc.w Objects_Lev_15_2 - Off_Objects ; 43
| |
− | dc.w Objects_Lev_16_1 - Off_Objects ; 44 $16
| |
− | dc.w Objects_Lev_16_2 - Off_Objects ; 45
| |
− | dc.w Objects_Lev_17_1 - Off_Objects ; 46 $17
| |
− | dc.w Objects_Lev_17_2 - Off_Objects ; 47
| |
− | dc.w Objects_Lev_18_1 - Off_Objects ; 48 $18
| |
− | dc.w Objects_Lev_18_2 - Off_Objects ; 49
| |
− | dc.w Objects_Lev_19_1 - Off_Objects ; 50 $19
| |
− | dc.w Objects_Lev_19_2 - Off_Objects ; 51
| |
− | dc.w Objects_Lev_1A_1 - Off_Objects ; 52 $1A
| |
− | dc.w Objects_Lev_1A_2 - Off_Objects ; 53
| |
− | dc.w Objects_Lev_1B_1 - Off_Objects ; 54 $1B
| |
− | dc.w Objects_Lev_1B_2 - Off_Objects ; 55
| |
− | dc.w Objects_Lev_1C_1 - Off_Objects ; 56 $1C
| |
− | dc.w Objects_Lev_1C_2 - Off_Objects ; 57
| |
− | dc.w Objects_Lev_1D_1 - Off_Objects ; 58 $1D
| |
− | dc.w Objects_Lev_1D_2 - Off_Objects ; 59
| |
− | dc.w Objects_Lev_1E_1 - Off_Objects ; 60 $1E
| |
− | dc.w Objects_Lev_1E_2 - Off_Objects ; 61
| |
− | dc.w Objects_Lev_1F_1 - Off_Objects ; 62 $1F
| |
− | dc.w Objects_Lev_1F_2 - Off_Objects ; 63
| |
− | dc.w Objects_Lev_20_1 - Off_Objects ; 64 $20
| |
− | dc.w Objects_Lev_20_2 - Off_Objects ; 65
| |
− | </asm>
| |
− |
| |
− | Then find:
| |
− | <asm>
| |
− | ;Objects_Null1: ; unused
| |
− | BINCLUDE "level/objects/Null_1.bin"
| |
− |
| |
− | Objects_EHZ_1: BINCLUDE "level/objects/EHZ_1.bin"
| |
− | Objects_EHZ_2: BINCLUDE "level/objects/EHZ_2.bin"
| |
− | Objects_MTZ_1: BINCLUDE "level/objects/MTZ_1.bin"
| |
− | Objects_MTZ_2: BINCLUDE "level/objects/MTZ_2.bin"
| |
− | Objects_MTZ_3: BINCLUDE "level/objects/MTZ_3.bin"
| |
− | Objects_WFZ_1: BINCLUDE "level/objects/WFZ_1.bin"
| |
− | Objects_WFZ_2: BINCLUDE "level/objects/WFZ_2.bin"
| |
− | Objects_HTZ_1: BINCLUDE "level/objects/HTZ_1.bin"
| |
− | Objects_HTZ_2: BINCLUDE "level/objects/HTZ_2.bin"
| |
− | Objects_HPZ_1: BINCLUDE "level/objects/HPZ_1.bin"
| |
− | Objects_HPZ_2: BINCLUDE "level/objects/HPZ_2.bin"
| |
− |
| |
− | ;Objects_Null2: ; unused
| |
− | BINCLUDE "level/objects/Null_2.bin"
| |
− |
| |
− | Objects_OOZ_1: BINCLUDE "level/objects/OOZ_1.bin"
| |
− | Objects_OOZ_2: BINCLUDE "level/objects/OOZ_2.bin"
| |
− | Objects_MCZ_1: BINCLUDE "level/objects/MCZ_1.bin"
| |
− | Objects_MCZ_2: BINCLUDE "level/objects/MCZ_2.bin"
| |
− | Objects_CNZ_1: BINCLUDE "level/objects/CNZ_1.bin"
| |
− | Objects_CNZ_2: BINCLUDE "level/objects/CNZ_2.bin"
| |
− | Objects_CPZ_1: BINCLUDE "level/objects/CPZ_1.bin"
| |
− | Objects_CPZ_2: BINCLUDE "level/objects/CPZ_2.bin"
| |
− | Objects_DEZ_1: BINCLUDE "level/objects/DEZ_1.bin"
| |
− | Objects_DEZ_2: BINCLUDE "level/objects/DEZ_2.bin"
| |
− | Objects_ARZ_1: BINCLUDE "level/objects/ARZ_1.bin"
| |
− | Objects_ARZ_2: BINCLUDE "level/objects/ARZ_2.bin"
| |
− | Objects_SCZ_1: BINCLUDE "level/objects/SCZ_1.bin"
| |
− | Objects_SCZ_2: BINCLUDE "level/objects/SCZ_2.bin"
| |
− | Objects_Null3: BINCLUDE "level/objects/Null_3.bin"
| |
− |
| |
− | ;Objects_Null4: ; unused
| |
− | BINCLUDE "level/objects/Null_4.bin"
| |
− | ;Objects_Null5: ; unused
| |
− | BINCLUDE "level/objects/Null_5.bin"
| |
− | ;Objects_Null6: ; unused
| |
− | BINCLUDE "level/objects/Null_6.bin"
| |
− | </asm>
| |
− |
| |
− | then add this to the end:
| |
− |
| |
− | <asm>
| |
− | Objects_Lev_11_1: BINCLUDE "level/objects/Lev_11_1.bin"
| |
− | Objects_Lev_11_2: BINCLUDE "level/objects/Lev_11_2.bin"
| |
− | Objects_Lev_12_1: BINCLUDE "level/objects/Lev_12_1.bin"
| |
− | Objects_Lev_12_2: BINCLUDE "level/objects/Lev_12_2.bin"
| |
− | Objects_Lev_13_1: BINCLUDE "level/objects/Lev_13_1.bin"
| |
− | Objects_Lev_13_2: BINCLUDE "level/objects/Lev_13_2.bin"
| |
− | Objects_Lev_14_1: BINCLUDE "level/objects/Lev_14_1.bin"
| |
− | Objects_Lev_14_2: BINCLUDE "level/objects/Lev_14_2.bin"
| |
− | Objects_Lev_15_1: BINCLUDE "level/objects/Lev_15_1.bin"
| |
− | Objects_Lev_15_2: BINCLUDE "level/objects/Lev_15_2.bin"
| |
− | Objects_Lev_16_1: BINCLUDE "level/objects/Lev_16_1.bin"
| |
− | Objects_Lev_16_2: BINCLUDE "level/objects/Lev_16_2.bin"
| |
− | Objects_Lev_17_1: BINCLUDE "level/objects/Lev_17_1.bin"
| |
− | Objects_Lev_17_2: BINCLUDE "level/objects/Lev_17_2.bin"
| |
− | Objects_Lev_18_1: BINCLUDE "level/objects/Lev_18_1.bin"
| |
− | Objects_Lev_18_2: BINCLUDE "level/objects/Lev_18_2.bin"
| |
− | Objects_Lev_19_1: BINCLUDE "level/objects/Lev_19_1.bin"
| |
− | Objects_Lev_19_2: BINCLUDE "level/objects/Lev_19_2.bin"
| |
− | Objects_Lev_1A_1: BINCLUDE "level/objects/Lev_1A_1.bin"
| |
− | Objects_Lev_1A_2: BINCLUDE "level/objects/Lev_1A_2.bin"
| |
− | Objects_Lev_1B_1: BINCLUDE "level/objects/Lev_1B_1.bin"
| |
− | Objects_Lev_1B_2: BINCLUDE "level/objects/Lev_1B_2.bin"
| |
− | Objects_Lev_1C_1: BINCLUDE "level/objects/Lev_1C_1.bin"
| |
− | Objects_Lev_1C_2: BINCLUDE "level/objects/Lev_1C_2.bin"
| |
− | Objects_Lev_1D_1: BINCLUDE "level/objects/Lev_1D_1.bin"
| |
− | Objects_Lev_1D_2: BINCLUDE "level/objects/Lev_1D_2.bin"
| |
− | Objects_Lev_1E_1: BINCLUDE "level/objects/Lev_1E_1.bin"
| |
− | Objects_Lev_1E_2: BINCLUDE "level/objects/Lev_1E_2.bin"
| |
− | Objects_Lev_1F_1: BINCLUDE "level/objects/Lev_1F_1.bin"
| |
− | Objects_Lev_1F_2: BINCLUDE "level/objects/Lev_1F_2.bin"
| |
− | Objects_Lev_20_1: BINCLUDE "level/objects/Lev_20_1.bin"
| |
− | Objects_Lev_20_2: BINCLUDE "level/objects/Lev_20_2.bin"
| |
− | </asm>
| |
− |
| |
− | ==Extending tiles and patterns index==
| |
− | Find:
| |
− | <asm>
| |
− | ;----------------------------------------------------------------------------------
| |
− | ; EHZ 16x16 block mappings (Kosinski compression) ; was: (Kozinski compression)
| |
− | BM16_EHZ: BINCLUDE "mappings/16x16/EHZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; EHZ/HTZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_95C24:
| |
− | ArtKos_EHZ: BINCLUDE "art/kosinski/EHZ_HTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; HTZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_HTZ: BINCLUDE "mappings/16x16/HTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; HTZ pattern suppliment to EHZ level patterns (Kosinski compression)
| |
− | ; ArtKoz_98AB4:
| |
− | ArtKos_HTZ: BINCLUDE "art/kosinski/HTZ_Supp.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; EHZ/HTZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_EHZ: BINCLUDE "mappings/128x128/EHZ_HTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MTZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_MTZ: BINCLUDE "mappings/16x16/MTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MTZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_MTZ: BINCLUDE "art/kosinski/MTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MTZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_MTZ: BINCLUDE "mappings/128x128/MTZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; OOZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_OOZ: BINCLUDE "mappings/16x16/OOZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; OOZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_A4204:
| |
− | ArtKos_OOZ: BINCLUDE "art/kosinski/OOZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; OOZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_OOZ: BINCLUDE "mappings/128x128/OOZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MCZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_MCZ: BINCLUDE "mappings/16x16/MCZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MCZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_A9D74:
| |
− | ArtKos_MCZ: BINCLUDE "art/kosinski/MCZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; MCZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_MCZ: BINCLUDE "mappings/128x128/MCZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CNZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_CNZ: BINCLUDE "mappings/16x16/CNZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CNZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_B0894:
| |
− | ArtKos_CNZ: BINCLUDE "art/kosinski/CNZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CNZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_CNZ: BINCLUDE "mappings/128x128/CNZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CPZ/DEZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_CPZ: BINCLUDE "mappings/16x16/CPZ_DEZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CPZ/DEZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_B6174:
| |
− | ArtKos_CPZ: BINCLUDE "art/kosinski/CPZ_DEZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; CPZ/DEZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_CPZ: BINCLUDE "mappings/128x128/CPZ_DEZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; ARZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_ARZ: BINCLUDE "mappings/16x16/ARZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; ARZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_BCC24:
| |
− | ArtKos_ARZ: BINCLUDE "art/kosinski/ARZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; ARZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_ARZ: BINCLUDE "mappings/128x128/ARZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; WFZ/SCZ 16x16 block mappings (Kosinski compression)
| |
− | BM16_WFZ: BINCLUDE "mappings/16x16/WFZ_SCZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; WFZ/SCZ main level patterns (Kosinski compression)
| |
− | ; ArtKoz_C5004:
| |
− | ArtKos_SCZ: BINCLUDE "art/kosinski/WFZ_SCZ.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; WFZ pattern suppliment to SCZ tiles (Kosinski compression)
| |
− | ; ArtKoz_C7EC4:
| |
− | ArtKos_WFZ: BINCLUDE "art/kosinski/WFZ_Supp.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; WFZ/SCZ 128x128 block mappings (Kosinski compression)
| |
− | BM128_WFZ: BINCLUDE "mappings/128x128/WFZ_SCZ.bin"
| |
− | </asm>
| |
− |
| |
− | then add this to the end:
| |
− | <asm>
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_11 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_11: BINCLUDE "mappings/16x16/Lev_11.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_11 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_11: BINCLUDE "art/kosinski/Lev_11.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_11 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_11: BINCLUDE "mappings/128x128/Lev_11.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_12 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_12: BINCLUDE "mappings/16x16/Lev_12.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_12 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_12: BINCLUDE "art/kosinski/Lev_12.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_12 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_12: BINCLUDE "mappings/128x128/Lev_12.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_13 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_13: BINCLUDE "mappings/16x16/Lev_13.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_13 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_13: BINCLUDE "art/kosinski/Lev_13.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_13 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_13: BINCLUDE "mappings/128x128/Lev_13.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_14 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_14: BINCLUDE "mappings/16x16/Lev_14.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_14 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_14: BINCLUDE "art/kosinski/Lev_14.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_14 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_14: BINCLUDE "mappings/128x128/Lev_14.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_15 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_15: BINCLUDE "mappings/16x16/Lev_15.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_15 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_15: BINCLUDE "art/kosinski/Lev_15.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_15 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_15: BINCLUDE "mappings/128x128/Lev_15.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_16 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_16: BINCLUDE "mappings/16x16/Lev_16.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_16 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_16: BINCLUDE "art/kosinski/Lev_16.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_16 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_16: BINCLUDE "mappings/128x128/Lev_16.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_17 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_17: BINCLUDE "mappings/16x16/Lev_17.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_17 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_17: BINCLUDE "art/kosinski/Lev_17.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_17 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_17: BINCLUDE "mappings/128x128/Lev_17.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_18 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_18: BINCLUDE "mappings/16x16/Lev_18.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_18 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_18: BINCLUDE "art/kosinski/Lev_18.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_18 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_18: BINCLUDE "mappings/128x128/Lev_18.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_19 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_19: BINCLUDE "mappings/16x16/Lev_19.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_19 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_19: BINCLUDE "art/kosinski/Lev_19.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_19 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_19: BINCLUDE "mappings/128x128/Lev_19.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1A 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1A: BINCLUDE "mappings/16x16/Lev_1A.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1A main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1A: BINCLUDE "art/kosinski/Lev_1A.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1A 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1A: BINCLUDE "mappings/128x128/Lev_1A.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1B 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1B: BINCLUDE "mappings/16x16/Lev_1B.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1B main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1B: BINCLUDE "art/kosinski/Lev_1B.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1B 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1B: BINCLUDE "mappings/128x128/Lev_1B.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1C 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1C: BINCLUDE "mappings/16x16/Lev_1C.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1C main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1C: BINCLUDE "art/kosinski/Lev_1C.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1C 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1C: BINCLUDE "mappings/128x128/Lev_1C.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1D 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1D: BINCLUDE "mappings/16x16/Lev_1D.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1D main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1D: BINCLUDE "art/kosinski/Lev_1D.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1D 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1D: BINCLUDE "mappings/128x128/Lev_1D.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1E 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1E: BINCLUDE "mappings/16x16/Lev_1E.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1E main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1E: BINCLUDE "art/kosinski/Lev_1E.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1E 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1E: BINCLUDE "mappings/128x128/Lev_1E.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1F 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_1F: BINCLUDE "mappings/16x16/Lev_1F.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1F main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_1F: BINCLUDE "art/kosinski/Lev_1F.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_1F 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_1F: BINCLUDE "mappings/128x128/Lev_1F.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_20 16x16 block mappings (Kosinski compression)
| |
− | BM16_Lev_20: BINCLUDE "mappings/16x16/Lev_20.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_20 main level patterns (Kosinski compression)
| |
− | ; ArtKoz_9DB64:
| |
− | ArtKos_Lev_20: BINCLUDE "art/kosinski/Lev_20.bin"
| |
− | ;-----------------------------------------------------------------------------------
| |
− | ; Lev_20 128x128 block mappings (Kosinski compression)
| |
− | BM128_Lev_20: BINCLUDE "mappings/128x128/Lev_20.bin"
| |
− | </asm>
| |
− |
| |
− | Then add optional pattern supplements to suit your hack's needs.
| |
− |
| |
− | Now find:
| |
− | <asm>
| |
− | LevelArtPointers:
| |
− | levartptrs 4, 5, 4, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 0 ; EHZ ; EMERALD HILL ZONE
| |
− | levartptrs 6, 7, 5, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 1 ; LEV1 ; LEVEL 1 (UNUSED)
| |
− | levartptrs 8, 9, 6, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 2 ; LEV2 ; LEVEL 2 (UNUSED)
| |
− | levartptrs $A, $B, 7, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 3 ; LEV3 ; LEVEL 3 (UNUSED)
| |
− | levartptrs $C, $D, 8, ArtKos_MTZ, BM16_MTZ, BM128_MTZ ; 4 ; MTZ ; METROPOLIS ZONE ACTS 1 & 2
| |
− | levartptrs $C, $D, 8, ArtKos_MTZ, BM16_MTZ, BM128_MTZ ; 5 ; MTZ3 ; METROPOLIS ZONE ACT 3
| |
− | levartptrs $10,$11, $A, ArtKos_SCZ, BM16_WFZ, BM128_WFZ ; 6 ; WFZ ; WING FORTRESS ZONE
| |
− | levartptrs $12,$13, $B, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 7 ; HTZ ; HILL TOP ZONE
| |
− | levartptrs $14,$15, $C, BM16_OOZ, BM16_OOZ, BM16_OOZ ; 8 ; HPZ ; HIDDEN PALACE ZONE (UNUSED)
| |
− | levartptrs $16,$17, $D, ArtKos_EHZ, BM16_EHZ, BM128_EHZ ; 9 ; LEV9 ; LEVEL 9 (UNUSED)
| |
− | levartptrs $18,$19, $E, ArtKos_OOZ, BM16_OOZ, BM128_OOZ ; $A ; OOZ ; OIL OCEAN ZONE
| |
− | levartptrs $1A,$1B, $F, ArtKos_MCZ, BM16_MCZ, BM128_MCZ ; $B ; MCZ ; MYSTIC CAVE ZONE
| |
− | levartptrs $1C,$1D,$10, ArtKos_CNZ, BM16_CNZ, BM128_CNZ ; $C ; CNZ ; CASINO NIGHT ZONE
| |
− | levartptrs $1E,$1F,$11, ArtKos_CPZ, BM16_CPZ, BM128_CPZ ; $D ; CPZ ; CHEMICAL PLANT ZONE
| |
− | levartptrs $20,$21,$12, ArtKos_CPZ, BM16_CPZ, BM128_CPZ ; $E ; DEZ ; DEATH EGG ZONE
| |
− | levartptrs $22,$23,$13, ArtKos_ARZ, BM16_ARZ, BM128_ARZ ; $F ; ARZ ; AQUATIC RUIN ZONE
| |
− | levartptrs $24,$25,$14, ArtKos_SCZ, BM16_WFZ, BM128_WFZ ; $10 ; SCZ ; SKY CHASE ZONE
| |
− | </asm>
| |
− |
| |
− | then add this to the end:
| |
− | <asm>
| |
− | levartptrs $26, $27, $15, ArtKos_Lev_11, BM16_Lev_11, BM128_Lev_11 ; 0 ; Lev_11 ; LEV_11 ZONE
| |
− | levartptrs $28, $29, $16, ArtKos_Lev_12, BM16_Lev_12, BM128_Lev_12 ; 0 ; Lev_12 ; LEV_12 ZONE
| |
− | levartptrs $2A, $2B, $17, ArtKos_Lev_13, BM16_Lev_13, BM128_Lev_13 ; 0 ; Lev_13 ; LEV_13 ZONE
| |
− | levartptrs $2C, $2D, $18, ArtKos_Lev_14, BM16_Lev_14, BM128_Lev_14 ; 0 ; Lev_14 ; LEV_14 ZONE
| |
− | levartptrs $2E, $2F, $19, ArtKos_Lev_15, BM16_Lev_15, BM128_Lev_15 ; 0 ; Lev_15 ; LEV_15 ZONE
| |
− | levartptrs $30, $31, $1A, ArtKos_Lev_16, BM16_Lev_16, BM128_Lev_16 ; 0 ; Lev_16 ; LEV_16 ZONE
| |
− | levartptrs $32, $33, $1B, ArtKos_Lev_17, BM16_Lev_17, BM128_Lev_17 ; 0 ; Lev_17 ; LEV_17 ZONE
| |
− | levartptrs $34, $35, $1C, ArtKos_Lev_18, BM16_Lev_18, BM128_Lev_18 ; 0 ; Lev_18 ; LEV_18 ZONE
| |
− | levartptrs $36, $37, $1D, ArtKos_Lev_19, BM16_Lev_19, BM128_Lev_19 ; 0 ; Lev_19 ; LEV_19 ZONE
| |
− | levartptrs $38, $39, $1E, ArtKos_Lev_1A, BM16_Lev_1A, BM128_Lev_1A ; 0 ; Lev_1A ; LEV_1A ZONE
| |
− | levartptrs $3A, $3B, $1F, ArtKos_Lev_1B, BM16_Lev_1B, BM128_Lev_1B ; 0 ; Lev_1B ; LEV_1B ZONE
| |
− | levartptrs $3C, $3D, $20, ArtKos_Lev_1C, BM16_Lev_1C, BM128_Lev_1C ; 0 ; Lev_1C ; LEV_1C ZONE
| |
− | levartptrs $3E, $3F, $21, ArtKos_Lev_1D, BM16_Lev_1D, BM128_Lev_1D ; 0 ; Lev_1D ; LEV_1D ZONE
| |
− | levartptrs $40, $41, $22, ArtKos_Lev_1E, BM16_Lev_1E, BM128_Lev_1E ; 0 ; Lev_1E ; LEV_1E ZONE
| |
− | levartptrs $42, $43, $23, ArtKos_Lev_1F, BM16_Lev_1F, BM128_Lev_1F ; 0 ; Lev_1F ; LEV_1F ZONE
| |
− | levartptrs $44, $45, $24, ArtKos_Lev_20, BM16_Lev_20, BM128_Lev_20 ; 0 ; Lev_20 ; LEV_20 ZONE
| |
− | </asm>
| |
− |
| |
− | After this is added, you possibly need to add loading queries to the texture load index. Create the .bin files and you're finished.
| |
− |
| |
− | ==Extending level and tile layout indexes==
| |
− |
| |
− | Now you need to extend the layout index and we're done extending most level essentials.
| |
− |
| |
− | Find:
| |
− | <asm>
| |
− | Off_Level:
| |
− | dc.w Level_EHZ1-Off_Level
| |
− | dc.w Level_EHZ2-Off_Level; 1
| |
− | dc.w Level_EHZ1-Off_Level; 2
| |
− | dc.w Level_EHZ1-Off_Level; 3
| |
− | dc.w Level_EHZ1-Off_Level; 4
| |
− | dc.w Level_EHZ1-Off_Level; 5
| |
− | dc.w Level_EHZ1-Off_Level; 6
| |
− | dc.w Level_EHZ1-Off_Level; 7
| |
− | dc.w Level_MTZ1-Off_Level; 8
| |
− | dc.w Level_MTZ2-Off_Level; 9
| |
− | dc.w Level_MTZ3-Off_Level; 10
| |
− | dc.w Level_MTZ3-Off_Level; 11
| |
− | dc.w Level_WFZ-Off_Level; 12
| |
− | dc.w Level_WFZ-Off_Level; 13
| |
− | dc.w Level_HTZ1-Off_Level; 14
| |
− | dc.w Level_HTZ2-Off_Level; 15
| |
− | dc.w Level_OOZ1-Off_Level; 16
| |
− | dc.w Level_OOZ1-Off_Level; 17
| |
− | dc.w Level_EHZ1-Off_Level; 18
| |
− | dc.w Level_EHZ1-Off_Level; 19
| |
− | dc.w Level_OOZ1-Off_Level; 20
| |
− | dc.w Level_OOZ2-Off_Level; 21
| |
− | dc.w Level_MCZ1-Off_Level; 22
| |
− | dc.w Level_MCZ2-Off_Level; 23
| |
− | dc.w Level_CNZ1-Off_Level; 24
| |
− | dc.w Level_CNZ2-Off_Level; 25
| |
− | dc.w Level_CPZ1-Off_Level; 26
| |
− | dc.w Level_CPZ2-Off_Level; 27
| |
− | dc.w Level_DEZ-Off_Level; 28
| |
− | dc.w Level_DEZ-Off_Level; 29
| |
− | dc.w Level_ARZ1-Off_Level; 30
| |
− | dc.w Level_ARZ2-Off_Level; 31
| |
− | dc.w Level_SCZ-Off_Level; 32
| |
− | dc.w Level_SCZ-Off_Level; 33
| |
− | </asm>
| |
− |
| |
− | and add this to the end:
| |
− | <asm>
| |
− | dc.w Level_Lev11_1-Off_Level
| |
− | dc.w Level_Lev11_2-Off_Level
| |
− | dc.w Level_Lev12_1-Off_Level
| |
− | dc.w Level_Lev12_2-Off_Level
| |
− | dc.w Level_Lev13_1-Off_Level
| |
− | dc.w Level_Lev13_2-Off_Level
| |
− | dc.w Level_Lev14_1-Off_Level
| |
− | dc.w Level_Lev14_2-Off_Level
| |
− | dc.w Level_Lev15_1-Off_Level
| |
− | dc.w Level_Lev15_2-Off_Level
| |
− | dc.w Level_Lev16_1-Off_Level
| |
− | dc.w Level_Lev16_2-Off_Level
| |
− | dc.w Level_Lev17_1-Off_Level
| |
− | dc.w Level_Lev17_2-Off_Level
| |
− | dc.w Level_Lev18_1-Off_Level
| |
− | dc.w Level_Lev18_2-Off_Level
| |
− | dc.w Level_Lev19_1-Off_Level
| |
− | dc.w Level_Lev19_2-Off_Level
| |
− | dc.w Level_Lev1A_1-Off_Level
| |
− | dc.w Level_Lev1A_2-Off_Level
| |
− | dc.w Level_Lev1B_1-Off_Level
| |
− | dc.w Level_Lev1B_2-Off_Level
| |
− | dc.w Level_Lev1C_1-Off_Level
| |
− | dc.w Level_Lev1C_2-Off_Level
| |
− | dc.w Level_Lev1D_1-Off_Level
| |
− | dc.w Level_Lev1D_2-Off_Level
| |
− | dc.w Level_Lev1E_1-Off_Level
| |
− | dc.w Level_Lev1E_2-Off_Level
| |
− | dc.w Level_Lev1F_1-Off_Level
| |
− | dc.w Level_Lev1F_2-Off_Level
| |
− | dc.w Level_Lev20_1-Off_Level
| |
− | dc.w Level_Lev20_2-Off_Level
| |
− | </asm>
| |
− |
| |
− | Then find:
| |
− | <asm>
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; EHZ act 1 level layout (Kosinski compression)
| |
− | Level_EHZ1: BINCLUDE "level/layout/EHZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; EHZ act 2 level layout (Kosinski compression)
| |
− | Level_EHZ2: BINCLUDE "level/layout/EHZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; MTZ act 1 level layout (Kosinski compression)
| |
− | Level_MTZ1: BINCLUDE "level/layout/MTZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; MTZ act 2 level layout (Kosinski compression)
| |
− | Level_MTZ2: BINCLUDE "level/layout/MTZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; MTZ act 3 level layout (Kosinski compression)
| |
− | Level_MTZ3: BINCLUDE "level/layout/MTZ_3.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; WFZ level layout (Kosinski compression)
| |
− | Level_WFZ: BINCLUDE "level/layout/WFZ.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; HTZ act 1 level layout (Kosinski compression)
| |
− | Level_HTZ1: BINCLUDE "level/layout/HTZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; HTZ act 2 level layout (Kosinski compression)
| |
− | Level_HTZ2: BINCLUDE "level/layout/HTZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; OOZ act 1 level layout (Kosinski compression)
| |
− | Level_OOZ1: BINCLUDE "level/layout/OOZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; OOZ act 2 level layout (Kosinski compression)
| |
− | Level_OOZ2: BINCLUDE "level/layout/OOZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; MCZ act 1 level layout (Kosinski compression)
| |
− | Level_MCZ1: BINCLUDE "level/layout/MCZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; MCZ act 2 level layout (Kosinski compression)
| |
− | Level_MCZ2: BINCLUDE "level/layout/MCZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; CNZ act 1 level layout (Kosinski compression)
| |
− | Level_CNZ1: BINCLUDE "level/layout/CNZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; CNZ act 2 level layout (Kosinski compression)
| |
− | Level_CNZ2: BINCLUDE "level/layout/CNZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; CPZ act 1 level layout (Kosinski compression)
| |
− | Level_CPZ1: BINCLUDE "level/layout/CPZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; CPZ act 2 level layout (Kosinski compression)
| |
− | Level_CPZ2: BINCLUDE "level/layout/CPZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; DEZ level layout (Kosinski compression)
| |
− | Level_DEZ: BINCLUDE "level/layout/DEZ.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; ARZ act 1 level layout (Kosinski compression)
| |
− | Level_ARZ1: BINCLUDE "level/layout/ARZ_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; ARZ act 2 level layout (Kosinski compression)
| |
− | Level_ARZ2: BINCLUDE "level/layout/ARZ_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; SCZ level layout (Kosinski compression)
| |
− | Level_SCZ: BINCLUDE "level/layout/SCZ.bin"
| |
− | </asm>
| |
− |
| |
− | then add this at the end:
| |
− | <asm>
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev11 act 1 level layout (Kosinski compression)
| |
− | Level_Lev11_1: BINCLUDE "level/layout/Lev11_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev11 act 2 level layout (Kosinski compression)
| |
− | Level_Lev11_2: BINCLUDE "level/layout/Lev11_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev12_1 level layout (Kosinski compression)
| |
− | Level_Lev12_1: BINCLUDE "level/layout/Lev12_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev12_2 level layout (Kosinski compression)
| |
− | Level_Lev12_1: BINCLUDE "level/layout/Lev12_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev13_1 level layout (Kosinski compression)
| |
− | Level_Lev13_1: BINCLUDE "level/layout/Lev13_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev13_2 level layout (Kosinski compression)
| |
− | Level_Lev13_2: BINCLUDE "level/layout/Lev13_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev14_1 level layout (Kosinski compression)
| |
− | Level_Lev14_1: BINCLUDE "level/layout/Lev14_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev14_2 level layout (Kosinski compression)
| |
− | Level_Lev14_2: BINCLUDE "level/layout/Lev14_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev15_1 level layout (Kosinski compression)
| |
− | Level_Lev15_1: BINCLUDE "level/layout/Lev15_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev15_2 level layout (Kosinski compression)
| |
− | Level_Lev15_2: BINCLUDE "level/layout/Lev15_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev16_1 level layout (Kosinski compression)
| |
− | Level_Lev16_1: BINCLUDE "level/layout/Lev16_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev16_2 level layout (Kosinski compression)
| |
− | Level_Lev16_2: BINCLUDE "level/layout/Lev16_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev17_1 level layout (Kosinski compression)
| |
− | Level_Lev17_1: BINCLUDE "level/layout/Lev17_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev17_2 level layout (Kosinski compression)
| |
− | Level_Lev17_2: BINCLUDE "level/layout/Lev17_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev18_1 level layout (Kosinski compression)
| |
− | Level_Lev18_1: BINCLUDE "level/layout/Lev18_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev18_2 level layout (Kosinski compression)
| |
− | Level_Lev18_2: BINCLUDE "level/layout/Lev18_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev19_1 level layout (Kosinski compression)
| |
− | Level_Lev19_1: BINCLUDE "level/layout/Lev19_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev19_2 level layout (Kosinski compression)
| |
− | Level_Lev19_2: BINCLUDE "level/layout/Lev19_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1A_1 level layout (Kosinski compression)
| |
− | Level_Lev1A_1: BINCLUDE "level/layout/Lev1A_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1A_2 level layout (Kosinski compression)
| |
− | Level_Lev1A_2: BINCLUDE "level/layout/Lev1A_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1B_1 level layout (Kosinski compression)
| |
− | Level_Lev1B_1: BINCLUDE "level/layout/Lev1B_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1B_2 level layout (Kosinski compression)
| |
− | Level_Lev1B_2: BINCLUDE "level/layout/Lev1B_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1C_1 level layout (Kosinski compression)
| |
− | Level_Lev1C_1: BINCLUDE "level/layout/Lev1C_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1C_2 level layout (Kosinski compression)
| |
− | Level_Lev1C_2: BINCLUDE "level/layout/Lev1C_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1D_1 level layout (Kosinski compression)
| |
− | Level_Lev1D_1: BINCLUDE "level/layout/Lev1D_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1D_2 level layout (Kosinski compression)
| |
− | Level_Lev1D_2: BINCLUDE "level/layout/Lev1D_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1E_1 level layout (Kosinski compression)
| |
− | Level_Lev1E_1: BINCLUDE "level/layout/Lev1E_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1E_2 level layout (Kosinski compression)
| |
− | Level_Lev1E_2: BINCLUDE "level/layout/Lev1E_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1F_1 level layout (Kosinski compression)
| |
− | Level_Lev1F_1: BINCLUDE "level/layout/Lev1F_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev1F_2 level layout (Kosinski compression)
| |
− | Level_Lev1F_2: BINCLUDE "level/layout/Lev1F_2.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev20_1 level layout (Kosinski compression)
| |
− | Level_Lev20_1: BINCLUDE "level/layout/Lev20_1.bin"
| |
− | ;---------------------------------------------------------------------------------------
| |
− | ; Lev20_2 level layout (Kosinski compression)
| |
− | Level_Lev20_2: BINCLUDE "level/layout/Lev20_2.bin"
| |
− | </asm>
| |
− |
| |
− | Now create the .bin files.
| |
− |
| |
− | ==Extending the definition of act 2 (setting up our new levels so that they can have bosses in other words)==
| |
− | just being able to use sign posts in your new levels can be boring after a while, so we will make those changes so that we can put custom bosses in our new levels, actually extending the sprite pointer list is not within the scope of the tutorial, though highly recommended.
| |
− |
| |
− | find:
| |
− | <asm>SetLevelEndType:
| |
− | move.w #0,(Level_Has_Signpost).w ; set level type to non-signpost
| |
− | tst.w (Two_player_mode).w ; is it two-player competitive mode?
| |
− | bne.s LevelEnd_SetSignpost ; if yes, branch
| |
− | cmpi.w #$001,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if EHZ2, return
| |
− | cmpi.w #$500,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if MTZ3, return
| |
− | cmpi.w #$600,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if WFZ, return
| |
− | cmpi.w #$701,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if HTZ2, return
| |
− | cmpi.w #$A01,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if OOZ2, return
| |
− | cmpi.w #$B01,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if MCZ2, return
| |
− | cmpi.w #$C01,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if CNZ2, return
| |
− | cmpi.w #$D01,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if CPZ2, return
| |
− | cmpi.w #$E00,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if DEZ, return
| |
− | cmpi.w #$F01,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if ARZ2, return
| |
− | cmpi.w #$1000,(Current_ZoneAndAct).w
| |
− | beq.s return_4C46 ; if SCZ, return
| |
− | </asm>
| |
− | we will change it to:
| |
− | <asm>
| |
− | JmpTo_LevelEnd_SetSignpost
| |
− | jmp LevelEnd_SetSignpost
| |
− |
| |
− | SetLevelEndType:
| |
− | move.w #0,(Level_Has_Signpost).w ; set level type to non-signpost
| |
− | tst.w (Two_player_mode).w ; is it two-player competitive mode?
| |
− | bne.s JmpTo_LevelEnd_SetSignpost ; if yes, branch
| |
− | cmpi.w #$001,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if EHZ2, return
| |
− | cmpi.w #$101,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if LZ2, return
| |
− | cmpi.w #$201,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if WZ2, return
| |
− | cmpi.w #$301,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if DHZ2, return
| |
− | cmpi.w #$500,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if MTZ3, return
| |
− | cmpi.w #$600,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if WFZ, return
| |
− | cmpi.w #$701,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if HTZ2, return
| |
− | cmpi.w #$801,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if HPZ2, return
| |
− | cmpi.w #$901,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if GCZ2, return
| |
− | cmpi.w #$A01,(Current_ZoneAndAct).w
| |
− | beq.w return_4C46 ; if OOZ2, return
| |
− | bra.s SetLevelEndType2
| |
− |
| |
− | return_4C46:
| |
− | rts
| |
− |
| |
− | SetLevelEndType2:
| |
− | cmpi.w #$B01,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if MCZ2, return
| |
− | cmpi.w #$C01,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if CNZ2, return
| |
− | cmpi.w #$D01,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if CPZ2, return
| |
− | cmpi.w #$E00,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if DEZ, return
| |
− | cmpi.w #$F01,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if ARZ2, return
| |
− | cmpi.w #$1000,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if SCZ, return
| |
− | cmpi.w #$1000,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if SCZ, return
| |
− | cmpi.w #$1101,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1201,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1301,(Current_ZoneAndAct).w
| |
− | beq.s return2_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1401,(Current_ZoneAndAct).w
| |
− | bra.s SetLevelEndType3
| |
− |
| |
− | return2_4C46:
| |
− | rts
| |
− |
| |
− | SetLevelEndType3:
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1501,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1601,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1701,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1801,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1901,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1A01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1B01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1C01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1D01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1E01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$1F01,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− | cmpi.w #$2001,(Current_ZoneAndAct).w
| |
− | beq.s return3_4C46 ; if one of our new levels in act 2, return
| |
− |
| |
− | ; loc_4C40:
| |
− | LevelEnd_SetSignpost:
| |
− | move.w #1,(Level_Has_Signpost).w ; set level type to signpost
| |
− |
| |
− | return3_4C46:
| |
− | rts
| |
− | </asm>
| |
− |
| |
− | ==Extend Level Size Array==
| |
− | our levels need a size, right? This part of the guide gives us just that.
| |
− |
| |
− | what we need to find is:
| |
− | <asm>
| |
− | WrdArr_LvlSize:
| |
− | dc.w $0, $29A0, $0, $320 ; $00 ; EHZ act 2
| |
− | dc.w $0, $2940, $0, $420 ; EHZ act 2
| |
− | dc.w $0, $3FFF, $0, $720 ; $01
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $02
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $03
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2280, -$100, $800 ; $04 ; MTZ act 1
| |
− | dc.w $0, $1E80, -$100, $800 ; MTZ act 2
| |
− | dc.w $0, $2A80, -$100, $800 ; $05 ; MTZ act 3
| |
− | dc.w $0, $3FFF, -$100, $800
| |
− | dc.w $0, $3FFF, $0, $720 ; $06 ; WFZ
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2800, $0, $720 ; $07 ; HTZ act 1
| |
− | dc.w $0, $3280, $0, $720 ; HTZ act 2
| |
− | dc.w $0, $3FFF, $0, $720 ; $08
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $09
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2F80, $0, $680 ; $0A ; OOZ act 1
| |
− | dc.w $0, $2D00, $0, $680 ; OOZ act 2
| |
− | dc.w $0, $2380, $3C0, $720 ; $0B ; MCZ act 1
| |
− | dc.w $0, $3FFF, $60, $720 ; MCZ act 2
| |
− | dc.w $0, $27A0, $0, $720 ; $0C ; CNZ act 1
| |
− | dc.w $0, $2A80, $0, $720 ; CNZ act 2
| |
− | dc.w $0, $2780, $0, $720 ; $0D ; CPZ act 1
| |
− | dc.w $0, $2A80, $0, $720 ; CPZ act 2
| |
− | dc.w $0, $1000, $C8, $C8 ; $0F ; DEZ
| |
− | dc.w $0, $1000, $C8, $C8
| |
− | dc.w $0, $28C0, $200, $600 ; $10 ; ARZ act 1
| |
− | dc.w $0, $3FFF, $180, $710 ; ARZ act 2
| |
− | dc.w $0, $3FFF, $0, $000 ; $11 ; SCZ
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | </asm>
| |
− |
| |
− | and we will change it to:
| |
− | <asm>
| |
− | WrdArr_LvlSize:
| |
− | dc.w $0, $29A0, $0, $320 ; $00 ; EHZ act 2
| |
− | dc.w $0, $2940, $0, $420 ; EHZ act 2
| |
− | dc.w $0, $3FFF, $0, $720 ; $01
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $02
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $03
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2280, -$100, $800 ; $04 ; MTZ act 1
| |
− | dc.w $0, $1E80, -$100, $800 ; MTZ act 2
| |
− | dc.w $0, $2A80, -$100, $800 ; $05 ; MTZ act 3
| |
− | dc.w $0, $3FFF, -$100, $800
| |
− | dc.w $0, $3FFF, $0, $720 ; $06 ; WFZ
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2800, $0, $720 ; $07 ; HTZ act 1
| |
− | dc.w $0, $3280, $0, $720 ; HTZ act 2
| |
− | dc.w $0, $3FFF, $0, $720 ; $08
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $09
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $2F80, $0, $680 ; $0A ; OOZ act 1
| |
− | dc.w $0, $2D00, $0, $680 ; OOZ act 2
| |
− | dc.w $0, $2380, $3C0, $720 ; $0B ; MCZ act 1
| |
− | dc.w $0, $3FFF, $60, $720 ; MCZ act 2
| |
− | dc.w $0, $27A0, $0, $720 ; $0C ; CNZ act 1
| |
− | dc.w $0, $2A80, $0, $720 ; CNZ act 2
| |
− | dc.w $0, $2780, $0, $720 ; $0D ; CPZ act 1
| |
− | dc.w $0, $2A80, $0, $720 ; CPZ act 2
| |
− | dc.w $0, $1000, $C8, $C8 ; $0E ; DEZ
| |
− | dc.w $0, $1000, $C8, $C8
| |
− | dc.w $0, $28C0, $200, $600 ; $0F ; ARZ act 1
| |
− | dc.w $0, $3FFF, $180, $710 ; ARZ act 2
| |
− | dc.w $0, $3FFF, $0, $000 ; $10 ; SCZ
| |
− | dc.w $0, $3FFF, $0, $720
| |
− | dc.w $0, $3FFF, $0, $720 ; $11 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $12 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $13 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $14 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $15 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $16 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $17 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $18 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $19 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1A ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1B ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1C ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1D ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1E ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $1F ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | dc.w $0, $3FFF, $0, $720 ; $20 ;one of our new levels (act 1)
| |
− | dc.w $0, $3FFF, $0, $720 ;one of our new levels (act 2)
| |
− | </asm>
| |
− |
| |
− | ==Extending the Start Location Index==
| |
− | Sonic has to start somewhere right?
| |
− |
| |
− | Find this:
| |
− | <asm>
| |
− | WrdArr_StartLoc:
| |
− | dc.w $60, $28F ; $00
| |
− | dc.w $60, $2AF
| |
− | dc.w $60, $28F ; $01
| |
− | dc.w $60, $2AF
| |
− | dc.w $60, $1AC ; $02
| |
− | dc.w $60, $1AC
| |
− | dc.w $60, $28F ; $03
| |
− | dc.w $60, $2AF
| |
− | dc.w $60, $28C ; $04
| |
− | dc.w $60, $5EC
| |
− | dc.w $60, $20C ; $05
| |
− | dc.w $60, $2AF
| |
− | dc.w $60, $4CC ; $06
| |
− | dc.w $1E0, $4CC
| |
− | dc.w $60, $3EF ; $07
| |
− | dc.w $60, $6AF
| |
− | dc.w $230, $1AC ; $08
| |
− | dc.w $230, $1AC
| |
− | dc.w $60, $28F ; $09
| |
− | dc.w $60, $2AF
| |
− | dc.w $60, $6AC ; $0A
| |
− | dc.w $60, $56C
| |
− | dc.w $60, $6AC ; $0B
| |
− | dc.w $60, $5AC
| |
− | dc.w $60, $2AC ; $0C
| |
− | dc.w $60, $58C
| |
− | dc.w $60, $1EC ; $0D
| |
− | dc.w $60, $12C
| |
− | dc.w $60, $12D ; $0E
| |
− | dc.w $60, $12D
| |
− | dc.w $60, $37E ; $0F
| |
− | dc.w $60, $37E
| |
− | dc.w $120, $70 ; $10
| |
− | dc.w $140, $70
| |
− | </asm>
| |
− |
| |
− | then add this to the end:
| |
− | <asm>
| |
− | dc.w 0, 0 ; $11
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $12
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $13
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $14
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $15
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $16
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $17
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $18
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $19
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1A
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1B
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1C
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1D
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1E
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $1F
| |
− | dc.w 0, 0
| |
− | dc.w 0, 0 ; $20
| |
− | dc.w 0, 0
| |
− | </asm>
| |
− |
| |
− | then replace the 0s with the desired x and y co-ordinance.
| |
− |
| |
− | ==Notes==
| |
− |
| |
− | All new .bin files need to be created in order for the ROM to build. If something doesn't load correctly (besides new animated patterns that you have just made by youself, only major things like ROM crashes) please don't hesitate to ask for help and/or get it working and edit this article. (Like the title cards being broken for levels past $10)
| |
− |
| |
− | [[Category:SCHG How-tos|Extend the level index past $10 in Sonic 2]]
| |