Minor fix to Armory S door - can't seem to get it right Minor fix to spirals that cross the horiz quadrant boundary while traversing
112 lines
2.5 KiB
NASM
112 lines
2.5 KiB
NASM
!add = "clc : adc"
|
|
!sub = "sec : sbc"
|
|
|
|
; Free RAM notes
|
|
; Normal doors use $0127 for scrolling indicator
|
|
; Normal doors use $AB to store the trap door indicator
|
|
; Spiral doors use $045e to store stair type
|
|
; Gfx uses $b1 to for sub-sub-sub-module thing
|
|
|
|
; Hooks into various routines
|
|
|
|
org $02b5c4 ; -- moving right routine 135c4
|
|
jsl WarpRight
|
|
org $02b665 ; -- moving left routine
|
|
jsl WarpLeft
|
|
org $02b713 ; -- moving down routine
|
|
jsl WarpDown
|
|
org $02b7b4 ; -- moving up routine
|
|
jsl WarpUp
|
|
org $02bd80
|
|
jsl AdjustTransition
|
|
nop
|
|
org $01b714
|
|
jsl TrapDoorFixer
|
|
|
|
;turn off linking doors -- see .notRoomLinkDoor label in Bank02.asm
|
|
org $02b5a6
|
|
bra NotLinkDoor1
|
|
org $02b5b6
|
|
NotLinkDoor1:
|
|
org $02b647
|
|
bra NotLinkDoor2
|
|
org $02b657
|
|
NotLinkDoor2:
|
|
|
|
|
|
; Staircase routine
|
|
org $01c3d4 ;(PC: c3d4)
|
|
jsl RecordStairType : nop
|
|
org $02a1e7 ;(PC: 121e7)
|
|
jsl SpiralWarp
|
|
|
|
|
|
; Graphics fix
|
|
org $02895d
|
|
Splicer:
|
|
jsl GfxFixer
|
|
lda $b1 : beq .done
|
|
rts
|
|
nop #5
|
|
.done
|
|
|
|
org $00fda4
|
|
Dungeon_InitStarTileCh:
|
|
org $00d6ae ;(PC: 56ae)
|
|
LoadTransAuxGfx:
|
|
org $00df5a ;(PC: 5f5a)
|
|
PrepTransAuxGfx:
|
|
;org $0ffd65 ;(PC: 07fd65)
|
|
;Dungeon_LoadCustomTileAttr:
|
|
;org $01fec1
|
|
;Dungeon_ApproachFixedColor_variable:
|
|
;org $a0f972 ; Rando version
|
|
;LoadRoomHook:
|
|
org $1bee74 ;(PC: 0dee74)
|
|
Palette_DungBgMain:
|
|
org $1bec77
|
|
Palette_SpriteAux3:
|
|
org $1becc5
|
|
Palette_SpriteAux2:
|
|
org $1bece4
|
|
Palette_SpriteAux1:
|
|
|
|
;Kill big key (1e) check for south doors - not that easy unfortunately
|
|
;org $1aa90
|
|
;nop #5
|
|
|
|
;Main Code
|
|
org $278000 ;138000
|
|
incsrc normal.asm
|
|
incsrc spiral.asm
|
|
incsrc gfx.asm
|
|
|
|
; Data Section
|
|
org $279000
|
|
OffsetTable:
|
|
dw -8, 8
|
|
|
|
; Vert 0,6,0 Horz 2,0,8
|
|
org $279010
|
|
CoordIndex: ; Horizontal 1st
|
|
db 2, 0 ; Coordinate Index $20-$23
|
|
OppCoordIndex:
|
|
db 0, 2 ; Swapped coordinate Index $20-$23 (minor optimization)
|
|
CameraIndex: ; Horizontal 1st
|
|
db 0, 6 ; Camera Index $e2-$ea
|
|
CamQuadIndex: ; Horizontal 1st
|
|
db 8, 0 ; Camera quadrants $600-$60f
|
|
ShiftQuadIndex:
|
|
db 2, 1 ; see ShiftQuad func (relates to $a9,$aa)
|
|
CamBoundIndex: ; Horizontal 1st
|
|
db 0, 4 ; Camera Bounds $0618-$61f
|
|
OppCamBoundIndex: ; Horizontal 1st
|
|
db 4, 0 ; Camera Bounds $0618-$61f
|
|
CamBoundBaseLine: ; X camera stuff is 1st column todo Y camera needs more testing
|
|
dw $007f, $0077 ; Left/Top camera bounds when at edge or layout frozen
|
|
dw $0007, $000b ; Left/Top camera bounds when not frozen + appropriate low byte $22/$20 (preadj. by #$78/#$6c)
|
|
dw $00ff, $010b ; Right/Bot camera bounds when not frozen + appropriate low byte $20/$22
|
|
dw $017f, $0187 ; Right/Bot camera bound when at edge or layout frozen
|
|
|
|
incsrc doortables.asm
|