More separate-section implementation
This commit is contained in:
@@ -110,6 +110,7 @@ CheckChests:
|
||||
CMP.b $00
|
||||
BNE .next_chest
|
||||
|
||||
LDA.b $06
|
||||
JSR CheckChestSection
|
||||
INC.b $06
|
||||
BCC .increment_mask
|
||||
@@ -257,6 +258,7 @@ CheckPots:
|
||||
TXA : ASL A
|
||||
TAX
|
||||
LDA.l DungeonMask, X : STA.b $08
|
||||
TXA : LSR A : TAX
|
||||
|
||||
.mask_set
|
||||
TXA
|
||||
@@ -363,6 +365,7 @@ CheckEnemies:
|
||||
TXA : ASL A
|
||||
TAX
|
||||
LDA.l DungeonMask, X : STA.b $08
|
||||
TXA : LSR A : TAX
|
||||
|
||||
.mask_set
|
||||
TXA
|
||||
@@ -458,7 +461,7 @@ Get<type>Section:
|
||||
|
||||
.not_this_section
|
||||
PLX
|
||||
TXA : CLC : ADC.w #$000A : TAX
|
||||
TXA : CLC : ADC.w #$000D : TAX
|
||||
DEC.b $CE
|
||||
BNE .check_next_section
|
||||
BRA .found
|
||||
@@ -498,12 +501,51 @@ Check<type>Section:
|
||||
RTS
|
||||
endmacro
|
||||
|
||||
%DefineGetFooSection(Door, 2)
|
||||
%DefineGetFooSection(Chest, 4)
|
||||
%DefineGetFooSection(Pot, 6)
|
||||
%DefineGetFooSection(Enemy, 8)
|
||||
%DefineGetFooSection(Door, 3)
|
||||
%DefineGetFooSection(Stair, 5)
|
||||
%DefineGetFooSection(Chest, 7)
|
||||
%DefineGetFooSection(Pot, 9)
|
||||
%DefineGetFooSection(Enemy, 11)
|
||||
|
||||
%DefineCheckFooSection(Door)
|
||||
%DefineCheckFooSection(Stair)
|
||||
%DefineCheckFooSection(Chest)
|
||||
%DefineCheckFooSection(Pot)
|
||||
%DefineCheckFooSection(Enemy)
|
||||
|
||||
GetIncomingStairSection:
|
||||
PHX
|
||||
AND.w #$0300
|
||||
XBA
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l $8098D8, X
|
||||
STA.b $CC
|
||||
|
||||
LDA.b $CA
|
||||
AND.w #$00FF
|
||||
ASL A
|
||||
TAX
|
||||
LDA.l SplitRooms, X
|
||||
TAX
|
||||
|
||||
LDA.l SplitRooms, X
|
||||
AND.w #$00FF
|
||||
STA.b $CE
|
||||
BEQ .found
|
||||
|
||||
INX
|
||||
.check_next_section
|
||||
LDA.l SplitRooms+0, X
|
||||
AND.w #$00FF
|
||||
AND.b $CC
|
||||
BNE .found
|
||||
TXA : CLC : ADC.w #$000D : TAX
|
||||
DEC.b $CE
|
||||
BNE .check_next_section
|
||||
BRA .found
|
||||
|
||||
.found
|
||||
PLX
|
||||
LDA.b $CE
|
||||
RTS
|
||||
|
||||
@@ -525,6 +525,12 @@ DrawStairs:
|
||||
CLC : ADC.b $00
|
||||
TAX
|
||||
|
||||
LDA.l CurrentDisplayedRoom
|
||||
STA.b $CA
|
||||
LDA.b $02
|
||||
JSR CheckStairSection
|
||||
BCC .skip
|
||||
|
||||
PHY
|
||||
LDA.b $02
|
||||
CLC : ADC.w #$0015
|
||||
@@ -533,9 +539,17 @@ DrawStairs:
|
||||
|
||||
LDA.l SpiralTable, X
|
||||
AND.w #$00FF
|
||||
STA.b $CA
|
||||
|
||||
LDA.l SpiralTable, X
|
||||
JSR GetIncomingStairSection
|
||||
INC A
|
||||
ASL A : ASL A : ASL A : ASL A
|
||||
XBA
|
||||
ORA.b $CA
|
||||
STA.b $CA
|
||||
TYX
|
||||
STA.l DoorSlots, X
|
||||
STA.b $CA
|
||||
|
||||
LDA.w DoorSlotsBG2, Y
|
||||
CLC : ADC.w #!CenterTile
|
||||
@@ -550,6 +564,7 @@ DrawStairs:
|
||||
JSL DrawFullRoomTile
|
||||
PLY
|
||||
|
||||
.skip
|
||||
INY : INY
|
||||
INC.b $02
|
||||
DEC.b $06
|
||||
@@ -675,7 +690,6 @@ DrawDropOrWarp:
|
||||
RTS
|
||||
|
||||
DrawSingleConnectedRoom:
|
||||
AND.w #$00FF
|
||||
STA.b $CA
|
||||
LDA.w DoorSlotsBG2, Y
|
||||
CLC : ADC.w #!CenterTile
|
||||
@@ -1586,6 +1600,15 @@ DrawDoorsStairs:
|
||||
ASL A
|
||||
TAX
|
||||
|
||||
REP #$30
|
||||
LDA.l CurrentDisplayedRoom
|
||||
STA.b $CA
|
||||
LDA.b $0D
|
||||
AND.w #$00FF
|
||||
JSR CheckStairSection
|
||||
SEP #$30
|
||||
BCC .skip
|
||||
|
||||
LDA.b $0A
|
||||
CMP.b #$04
|
||||
BCS .draw
|
||||
@@ -1658,7 +1681,7 @@ DetectLinksSection:
|
||||
INX
|
||||
.next_section
|
||||
PHX
|
||||
LDA.l SplitRooms, X
|
||||
LDA.l SplitRooms+1, X
|
||||
TAX
|
||||
.next_area
|
||||
LDA.l SplitRooms, X
|
||||
@@ -1699,7 +1722,7 @@ DetectLinksSection:
|
||||
|
||||
.not_this_section
|
||||
PLX
|
||||
TXA : CLC : ADC.w #$000A : TAX
|
||||
TXA : CLC : ADC.w #$000D : TAX
|
||||
DEC.b $00
|
||||
BNE .next_section
|
||||
BRA .done
|
||||
|
||||
@@ -222,7 +222,7 @@ EdgePositions:
|
||||
.west
|
||||
db $02 ; TT Attic
|
||||
db $02, $02 ; Desert North Hall
|
||||
db $02, $00 ; HC Basement
|
||||
db $00, $02 ; HC Basement
|
||||
db $00 ; Desert East Wing
|
||||
db $02, $00 ; TT Triple
|
||||
db $02 ; TT Big Key Chest
|
||||
@@ -236,7 +236,7 @@ EdgePositions:
|
||||
.east
|
||||
db $02 ; TT Attic
|
||||
db $02, $02 ; Desert North Hall
|
||||
db $00, $02 ; HC Basement
|
||||
db $02, $00 ; HC Basement
|
||||
db $00 ; Desert East Wing
|
||||
db $02, $00 ; TT Triple
|
||||
db $02 ; TT Big Key Chest
|
||||
|
||||
@@ -24,13 +24,13 @@ db $01, $00, $02 ; ($07) Single Top-Right Staircase
|
||||
db $01, $00, $05 ; ($0A) Single Staircase at Top of Bottom Left Quadrant
|
||||
|
||||
db $01, $00, $04 ; ($0D) Moldorm
|
||||
db $02, $00, $02, $01, $00 ; ($10) Pod Basement
|
||||
db $02, $01, $00, $00, $02 ; ($10) Pod Basement
|
||||
db $03, $01, $0A, $02, $01, $00, $0B ; ($15) GT Entrance
|
||||
db $02, $00, $03, $01, $04 ; ($1C) Hera Below Moldorm
|
||||
db $02, $00, $01, $01, $0B ; ($21) PoD Bridge
|
||||
db $01, $00, $08 ; ($26) GT Ice Armos
|
||||
db $03, $00, $01, $01, $0B, $02, $09 ; ($29) Swamp Statue
|
||||
db $02, $00, $03, $01, $04 ; ($30) Hera Big Chest
|
||||
db $02, $01, $03, $00, $04 ; ($30) Hera Big Chest
|
||||
db $02, $00, $04, $02, $09 ; ($35) Hera Startiles (middle value unused)
|
||||
db $01, $00, $08 ; ($3A) West Swamp
|
||||
db $01, $00, $05 ; ($3D) Ice Hamlift
|
||||
|
||||
@@ -12,10 +12,14 @@ macro d(label)
|
||||
dw <label>-SplitRooms
|
||||
endmacro
|
||||
|
||||
macro sq(byte)
|
||||
db <byte>
|
||||
endmacro
|
||||
|
||||
SplitRooms:
|
||||
; 0/8 1/9 2/A 3/B 4/C 5/D 6/E 7/F
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.09) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.14) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
@@ -48,14 +52,14 @@ SplitRooms:
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.a9) : %d(.aa) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
|
||||
%d(.no) : %d(.no) : %d(.b2) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.b2) : %d(.no) : %d(.no) : %d(.no) : %d(.b6) : %d(.no)
|
||||
%d(.no) : %d(.b9) : %d(.no) : %d(.no) : %d(.bc) : %d(.no) : %d(.no) : %d(.no)
|
||||
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
|
||||
%d(.no) : %d(.d1) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.d6) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
%d(.no) : %d(.no) : %d(.no) : %d(.db) : %d(.no) : %d(.no) : %d(.no) : %d(.no)
|
||||
|
||||
%d(.no)
|
||||
|
||||
@@ -65,10 +69,29 @@ db $00
|
||||
.no_items
|
||||
db $FF
|
||||
|
||||
.09
|
||||
db $01
|
||||
%sq($04)
|
||||
%d(..areas) : %d(.no_items) : %d(..stairs)
|
||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $80, $FF, $00, $80
|
||||
db $FF
|
||||
..stairs
|
||||
db $01
|
||||
db $FF
|
||||
..enemies
|
||||
db $02
|
||||
db $FF
|
||||
|
||||
.14
|
||||
db $02
|
||||
%d(..areas3) : %d(..doors3) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
%d(..areas2) : %d(..doors2) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas3) : %d(..doors3) : %d(.no_items)
|
||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas2) : %d(..doors2) : %d(.no_items)
|
||||
%d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
..areas3
|
||||
db $03, $C0, $FF, $00, $50
|
||||
db $03, $00, $28, $30, $50
|
||||
@@ -84,8 +107,9 @@ db $05, $0B
|
||||
db $FF
|
||||
|
||||
.75
|
||||
db $02
|
||||
%d(..areas) : %d(..doors) : %d(..chests) : %d(.no_items) : %d(..enemies)
|
||||
db $01
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..chests) : %d(.no_items) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $80, $FF, $00, $FF
|
||||
db $FF
|
||||
@@ -101,7 +125,8 @@ db $FF
|
||||
|
||||
.7d ; GT warp maze (section next to rando room)
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $00, $FF, $00, $80
|
||||
db $03, $00, $80, $80, $FF
|
||||
@@ -119,7 +144,8 @@ db $FF
|
||||
|
||||
.a9
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
||||
..areas
|
||||
db $03, $00, $40, $70, $FF
|
||||
db $03, $00, $FF, $A0, $FF
|
||||
@@ -134,7 +160,8 @@ db $FF
|
||||
|
||||
.aa
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
..areas
|
||||
db $02, $00, $80, $00, $FF
|
||||
db $FF
|
||||
@@ -144,7 +171,8 @@ db $FF
|
||||
|
||||
.b2
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
..areas
|
||||
db $02, $00, $FF, $00, $80
|
||||
db $03, $60, $A0, $00, $40
|
||||
@@ -159,9 +187,28 @@ db $FF
|
||||
db $00, $01, $02, $03, $04
|
||||
db $FF
|
||||
|
||||
.b6
|
||||
db $01
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||
%d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $80, $FF, $00, $FF
|
||||
db $FF
|
||||
..doors
|
||||
db $08
|
||||
db $FF
|
||||
..pots
|
||||
db $00
|
||||
db $FF
|
||||
..enemies
|
||||
db $04
|
||||
db $FF
|
||||
|
||||
.b9
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(.no_items) : %d(.no_items)
|
||||
..areas
|
||||
db $01, $00, $20, $28, $60
|
||||
db $01, $00, $20, $28, $60
|
||||
@@ -173,7 +220,8 @@ db $FF
|
||||
|
||||
.bc
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..pots) : %d(.no_items)
|
||||
..areas
|
||||
db $03, $2C, $4C, $CA, $FF
|
||||
db $FF
|
||||
@@ -186,7 +234,9 @@ db $FF
|
||||
|
||||
.d1
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||
%d(.no_items) : %d(..pots) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $80, $FF, $00, $A8
|
||||
db $FF
|
||||
@@ -202,7 +252,9 @@ db $FF
|
||||
|
||||
.d6
|
||||
db $01
|
||||
%d(..areas) : %d(..doors) : %d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||
%d(.no_items) : %d(.no_items) : %d(..enemies)
|
||||
..areas
|
||||
db $03, $00, $80, $00, $FF
|
||||
db $FF
|
||||
@@ -212,3 +264,18 @@ db $FF
|
||||
..enemies
|
||||
db $00, $01, $02
|
||||
db $FF
|
||||
|
||||
.db
|
||||
db $01
|
||||
%sq($00)
|
||||
%d(..areas) : %d(..doors) : %d(.no_items)
|
||||
%d(..chests) : %d(.no_items) : %d(.no_items)
|
||||
..areas
|
||||
db $02, $B0, $FF, $90, $C0
|
||||
db $FF
|
||||
..doors
|
||||
db $0B
|
||||
db $FF
|
||||
..chests
|
||||
db $01
|
||||
db $FF
|
||||
|
||||
Reference in New Issue
Block a user