UW Sprites new home
Enemizer asm refinement
This commit is contained in:
@@ -359,11 +359,12 @@ warnpc $B08000
|
|||||||
;$22 Contrib Code
|
;$22 Contrib Code
|
||||||
;$23 Stats & Credits
|
;$23 Stats & Credits
|
||||||
;$24 Code Bank
|
;$24 Code Bank
|
||||||
|
;$26 Multiworld data
|
||||||
;$27 DR Code Bank
|
;$27 DR Code Bank
|
||||||
;$28 Keydrop / Standing Items Code bank
|
;$28 Keydrop / Standing Items Code bank
|
||||||
;$29 External hooks (rest of bank not used)
|
;$29 External hooks (rest of bank not used)
|
||||||
;$2A Reserved for OWR
|
;$2A Reserved for OWR
|
||||||
;$2B Room Data migration
|
;$2B Reserved for "outlet data" ~5.8k
|
||||||
;$2E Reserved for Tournament Use
|
;$2E Reserved for Tournament Use
|
||||||
;$2F Static RNG (rest is reserved for tournament use)
|
;$2F Static RNG (rest is reserved for tournament use)
|
||||||
;$30 Main Configuration Table
|
;$30 Main Configuration Table
|
||||||
@@ -371,6 +372,7 @@ warnpc $B08000
|
|||||||
;$32 Text Bank
|
;$32 Text Bank
|
||||||
;$33 Graphics Bank
|
;$33 Graphics Bank
|
||||||
;$36 reserved for Enemizer
|
;$36 reserved for Enemizer
|
||||||
|
;$37 Room data if needed for DR/Pottery/Enemizer
|
||||||
;$3A reserved for downstream use
|
;$3A reserved for downstream use
|
||||||
;$3B reserved for downstream use
|
;$3B reserved for downstream use
|
||||||
;$3F reserved for internal debugging
|
;$3F reserved for internal debugging
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
;-------------
|
;-------------
|
||||||
NMIHookAction:
|
NMIHookActionEnemizer:
|
||||||
{
|
{
|
||||||
;-----------------------------------------
|
;-----------------------------------------
|
||||||
; do our shell stuff
|
; do our shell stuff
|
||||||
@@ -33,7 +33,7 @@ NMIHookAction:
|
|||||||
; Sets DP to $0000
|
; Sets DP to $0000
|
||||||
LDA.w #$0000 : TCD
|
LDA.w #$0000 : TCD
|
||||||
|
|
||||||
JML.l NMIHookReturn
|
JML.l NMIHookReturnEnemizer
|
||||||
}
|
}
|
||||||
|
|
||||||
DMAKholdstare:
|
DMAKholdstare:
|
||||||
|
|||||||
BIN
enemizer/gfx/rocks.gfx
Normal file
BIN
enemizer/gfx/rocks.gfx
Normal file
Binary file not shown.
BIN
enemizer/gfx/rocks2.gfx
Normal file
BIN
enemizer/gfx/rocks2.gfx
Normal file
Binary file not shown.
BIN
enemizer/gfx/shell.gfx
Normal file
BIN
enemizer/gfx/shell.gfx
Normal file
Binary file not shown.
@@ -18,4 +18,6 @@ incsrc hooks/damage_hooks.asm
|
|||||||
|
|
||||||
incsrc hooks/overworld_sprite_hooks.asm
|
incsrc hooks/overworld_sprite_hooks.asm
|
||||||
|
|
||||||
|
incsrc hooks/underworld_sprite_hooks.asm
|
||||||
|
|
||||||
incsrc hooks/blindboss_hooks.asm
|
incsrc hooks/blindboss_hooks.asm
|
||||||
@@ -3,7 +3,7 @@
|
|||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
; rando already hooks the Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB) so we have to hook after that
|
; rando already hooks the Bank00.asm : 164 (PHA : PHX : PHY : PHD : PHB) so we have to hook after that
|
||||||
org $0080D0 ; <- D0 - Bank00.asm : 164-167 (PHB, LDA.w #$0000)
|
org $0080D0 ; <- D0 - Bank00.asm : 164-167 (PHB, LDA.w #$0000)
|
||||||
JML.l NMIHookAction
|
JML.l NMIHookActionEnemizer
|
||||||
org $0080D5 ; <- D5 - Bank00.asm : 164-167 (PHB, LDA.w #$0000)
|
org $0080D5 ; <- D5 - Bank00.asm : 164-167 (PHB, LDA.w #$0000)
|
||||||
NMIHookReturn:
|
NMIHookReturnEnemizer:
|
||||||
;--------------------------------------------------------------------------------
|
;--------------------------------------------------------------------------------
|
||||||
|
|||||||
@@ -1,3 +1,3 @@
|
|||||||
org $1EC147
|
org $1EC147
|
||||||
JSL newKodongoCollision
|
JSL NewKodongoCollision
|
||||||
NOP #$05
|
NOP #$05
|
||||||
|
|||||||
67
enemizer/hooks/underworld_sprite_hooks.asm
Normal file
67
enemizer/hooks/underworld_sprite_hooks.asm
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
org $09C29A
|
||||||
|
JSL LoadUnderworldSprites : NOP
|
||||||
|
|
||||||
|
; these hooks change the LDA.b ($00) commands to use LDA.b [$00] commands
|
||||||
|
; so we can store the sprites in a different bank
|
||||||
|
; also needs to change the use of $02 to $03 for slot index to make that possible
|
||||||
|
|
||||||
|
org $09C2B2
|
||||||
|
LDA.b [$00]
|
||||||
|
|
||||||
|
org $09C2C1
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C2CA
|
||||||
|
INC.b $03 ; change slot variable to $03
|
||||||
|
|
||||||
|
;org $09C329 standing items overwrote this one
|
||||||
|
;LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C332
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C345
|
||||||
|
DEC.b $03 : LDX.b $03
|
||||||
|
|
||||||
|
org $09C350
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C35A
|
||||||
|
DEC.b $03
|
||||||
|
|
||||||
|
org $09C36E
|
||||||
|
LDA.b $03
|
||||||
|
|
||||||
|
org $09C383
|
||||||
|
LDX.b $03
|
||||||
|
|
||||||
|
org $09C38C
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C398
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C3AA
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C3BF
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C3DF
|
||||||
|
LDA.b $03
|
||||||
|
|
||||||
|
org $09C3F3
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C3FB
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C404
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
org $09C416
|
||||||
|
LDA.b [$00],Y
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
newKodongoCollision:
|
NewKodongoCollision:
|
||||||
{
|
{
|
||||||
LDA $0DE0, X : INC A : AND.b #$03 : STA $0DE0, X
|
LDA $0DE0, X : INC A : AND.b #$03 : STA $0DE0, X
|
||||||
;If they collide more than 32time then kill them !
|
;If they collide more than 32time then kill them !
|
||||||
@@ -49,21 +49,15 @@ incsrc mimic_fixes.asm
|
|||||||
; todo: vitreous key fix for boss shuffle
|
; todo: vitreous key fix for boss shuffle
|
||||||
|
|
||||||
incsrc overworld_sprites.asm
|
incsrc overworld_sprites.asm
|
||||||
|
incsrc underworld_sprites.asm
|
||||||
|
|
||||||
incsrc blindboss.asm
|
incsrc blindboss.asm
|
||||||
|
|
||||||
|
incsrc shell_gfx.asm
|
||||||
warnpc $B6FFFF ;if we hit this we need to split stuff by bank
|
warnpc $B6FFFF ;if we hit this we need to split stuff by bank
|
||||||
|
|
||||||
org $0684BD
|
org $0684BD
|
||||||
Sprite_Get16BitCoords_long:
|
Sprite_Get16BitCoords_long:
|
||||||
|
|
||||||
org $0DBA71
|
|
||||||
GetRandomInt:
|
|
||||||
|
|
||||||
org $0DBB67
|
|
||||||
Sound_SetSfxPanWithPlayerCoords:
|
|
||||||
|
|
||||||
org $0DBB8A
|
|
||||||
Sound_SetSfx3PanLong:
|
|
||||||
|
|
||||||
org $1EC6FA ;F46FA
|
org $1EC6FA ;F46FA
|
||||||
SpritePrep_Eyegore:
|
SpritePrep_Eyegore:
|
||||||
12
enemizer/shell_gfx.asm
Normal file
12
enemizer/shell_gfx.asm
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
;================================================================================
|
||||||
|
; insert kholdstare & trinexx shell gfx file
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
GFX_Kholdstare_Shell:
|
||||||
|
incbin gfx/shell.gfx
|
||||||
|
|
||||||
|
GFX_Trinexx_Shell:
|
||||||
|
incbin gfx/rocks.gfx
|
||||||
|
|
||||||
|
GFX_Trinexx_Shell2:
|
||||||
|
incbin gfx/rocks2.gfx
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
6
enemizer/underworld_sprites.asm
Normal file
6
enemizer/underworld_sprites.asm
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
LoadUnderworldSprites:
|
||||||
|
STA.b $00 ; part one of what we replaced
|
||||||
|
LDA.w #$0028 : STA.b $02 ; set the bank to 28 for now
|
||||||
|
LDA.w $048E
|
||||||
|
RTL
|
||||||
|
|
||||||
@@ -2916,4 +2916,10 @@ JSL WalkUpOnOverworld
|
|||||||
NOP
|
NOP
|
||||||
|
|
||||||
org $02D7D2 ; BEQ .face_up
|
org $02D7D2 ; BEQ .face_up
|
||||||
NOP #2 ; this fixes Link's direction after mirroring and falling after entering through back of tavern
|
NOP #2 ; this fixes Link's direction after mirroring and falling after entering through back of tavern
|
||||||
|
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
; Enable new room header table
|
||||||
|
;--------------------------------------------------------------------------------
|
||||||
|
org $01B5E6
|
||||||
|
LDA.b #$30
|
||||||
@@ -92,35 +92,20 @@ SprItemIndex = $7E0750
|
|||||||
SprItemMWPlayer = $7E0760 ; 0x16
|
SprItemMWPlayer = $7E0760 ; 0x16
|
||||||
SprItemFlags = $7E0770 ; 0x16 (used for both pots and drops) (combine with SprDropsItem?)
|
SprItemFlags = $7E0770 ; 0x16 (used for both pots and drops) (combine with SprDropsItem?)
|
||||||
|
|
||||||
; todo: move sprites
|
org $09D62E
|
||||||
;org $09D62E
|
UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||||
;UWSpritesPointers ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
|
||||||
|
|
||||||
;org $09D87E
|
org $09D87E
|
||||||
;UWPotsPointers ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
|
||||||
|
|
||||||
;org $09DACE
|
|
||||||
;UWPotsData ; variable number of bytes (max 0x11D1) for all pots data
|
|
||||||
|
|
||||||
;org $A88000
|
|
||||||
;UWSpritesData ; variable number of bytes (max 0x2800) for all sprites and sprite drop data
|
|
||||||
; First $2800 bytes of this bank (28) is reserved for the sprite tables
|
|
||||||
|
|
||||||
;org $09C297
|
|
||||||
;LDA.w UWSpritesPointers,Y
|
|
||||||
;org $01E6BF ; not sure this code is reachable anymore
|
|
||||||
;LDA.l UWPotsPointers,X
|
|
||||||
;STA.b $00
|
|
||||||
;LDA.w #UWPotsPointers>>16
|
|
||||||
|
|
||||||
; $2800 bytes reserved for sprites
|
|
||||||
|
|
||||||
; temporary pot table until sprites get moved:
|
|
||||||
org $A88000
|
|
||||||
UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers
|
||||||
|
|
||||||
org $A88250
|
org $09DACE
|
||||||
UWPotsData:
|
UWPotsData: ; variable number of bytes (max 0x11D1) for all pots data
|
||||||
|
|
||||||
|
org $A88000
|
||||||
|
UWSpritesData: ; variable number of bytes (max 0x2800) for all sprites and sprite drop data
|
||||||
|
; First $2800 bytes of this bank (28) is reserved for the sprite tables
|
||||||
|
|
||||||
|
; $2800 bytes reserved for sprites
|
||||||
|
|
||||||
org $A8A800
|
org $A8A800
|
||||||
;tables:
|
;tables:
|
||||||
@@ -290,7 +275,7 @@ IncrementCountsForSubstitute:
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
ClearSpriteData:
|
ClearSpriteData:
|
||||||
STZ.b $02 : STZ.b $03 ; what we overrode
|
STZ.b $03 ; what we overrode # we no longer need STZ $02 see underworld_sprite_hooks
|
||||||
PHX
|
PHX
|
||||||
LDA #$00 : LDX #$00
|
LDA #$00 : LDX #$00
|
||||||
.loop
|
.loop
|
||||||
@@ -303,20 +288,20 @@ ClearSpriteData:
|
|||||||
; Runs during sprite load of the room
|
; Runs during sprite load of the room
|
||||||
LoadSpriteData:
|
LoadSpriteData:
|
||||||
INY : INY
|
INY : INY
|
||||||
LDA.b ($00), Y
|
LDA.b [$00], Y
|
||||||
CMP #$F3 : BCC .normal
|
CMP #$F3 : BCC .normal
|
||||||
PHA
|
PHA
|
||||||
DEC.b $02 ; standing items shouldn't consume a sprite slot
|
DEC.b $03 ; standing items shouldn't consume a sprite slot
|
||||||
LDX.b $02
|
LDX.b $03 ; these were changed to $03, for moved sprites
|
||||||
CMP #$F9 : BNE .not_multiworld
|
CMP #$F9 : BNE .not_multiworld
|
||||||
DEY : LDA.b ($00), Y : STA.l SprItemMWPlayer, X
|
DEY : LDA.b [$00], Y : STA.l SprItemMWPlayer, X
|
||||||
LDA.b #$02 : STA.l SprDropsItem, X : BRA .common
|
LDA.b #$02 : STA.l SprDropsItem, X : BRA .common
|
||||||
.not_multiworld
|
.not_multiworld
|
||||||
LDA.b #$00 : STA.l SprItemMWPlayer, X
|
LDA.b #$00 : STA.l SprItemMWPlayer, X
|
||||||
LDA.b #$01 : STA.l SprDropsItem, X
|
LDA.b #$01 : STA.l SprDropsItem, X
|
||||||
DEY
|
DEY
|
||||||
.common
|
.common
|
||||||
DEY : LDA.b ($00), Y : STA.l SprItemReceipt, X
|
DEY : LDA.b [$00], Y : STA.l SprItemReceipt, X
|
||||||
INY : INY
|
INY : INY
|
||||||
PLA
|
PLA
|
||||||
PLA : PLA ; remove the JSL return lower 16 bits
|
PLA : PLA ; remove the JSL return lower 16 bits
|
||||||
|
|||||||
0
multi/multiworld.asm
Normal file
0
multi/multiworld.asm
Normal file
1048
tables.asm
1048
tables.asm
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user