Housekeeping

This commit is contained in:
scawful
2024-01-15 14:12:30 -05:00
parent 7d71cb1ad9
commit 851afeec0e
7 changed files with 375 additions and 346 deletions

View File

@@ -143,8 +143,8 @@ group04:
; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ; 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
; ----------------------------------------------------------------------------------- ; -----------------------------------------------------------------------------------
db $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01 db $00, $00, $02, $02, $02, $02, $02, $02, $02, $02, $02, $01, $01, $01, $01, $01
db $02, $02, $02, $02, $00, $00, $00, $00, $00, $00, $02, $01, $01, $01, $01, $01 db $00, $00, $02, $02, $00, $00, $00, $00, $00, $00, $02, $01, $01, $01, $01, $01
db $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02, $02, $02 db $01, $01, $00, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02, $02, $02
db $00, $00, $22, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02, $02, $02 db $00, $00, $22, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02, $02, $02

View File

@@ -11,18 +11,18 @@
; 26 - N/A ; 26 - N/A
; 27 - N/A ; 27 - N/A
; 28 - ZS Reserved ; 28 - ZS Reserved
; 29 - ZSprite Engine ; 29 - ZS Reserved
; 2A - Sprites: all_sprites.asm ; 2A - ZS Reserved
; 2B - Items: all_items.asm ; 2B - Items: all_items.asm
; 2C - Dungeon Objects, Spike Subtype ; 2C - Dungeon Objects, Spike Subtype, Together Warp Tag
; 2D - Menu ; 2D - Menu
; 2E - HUD ; 2E - HUD
; 2F - House Tag ; 2F - House Tag
; 30 - N/A ; 30 - ZSprite Engine
; 31 - Deku Link Code ; 31 - Sprites: all_sprites.asm
; 32 - Entrance Music Fix ; 32 - Entrance Music Fix
; 33 - Together Warp Tag ; 33 - Custom Collision Tables
; 34 - N/A ; 34 - Deku Link Code
; 35 - Deku Link GFX ; 35 - Deku Link GFX
; 36 - Zora Link GFX ; 36 - Zora Link GFX
; 37 - Bunny Link GFX ; 37 - Bunny Link GFX
@@ -75,46 +75,16 @@ namespace Oracle
print " -- Dungeon -- " print " -- Dungeon -- "
print "" print ""
incsrc "Dungeons/keyblock.asm" incsrc "Dungeons/dungeons.asm"
print "End of Dungeons/keyblock.asm ", pc
incsrc "Dungeons/sanctuary_transition.asm"
incsrc "Dungeons/entrances.asm"
print "End of Dungeons/entrances.asm ", pc
incsrc "Dungeons/mothula.asm"
print "End of Dungeons/mothula.asm ", pc
incsrc "Dungeons/enemy_damage.asm"
print "End of Dungeons/enemy_damage.asm ", pc
incsrc "Dungeons/together_warp_tag.asm"
print "End of together_warp_tag.asm ", pc
incsrc "Dungeons/arrghus.asm"
print "End of Dungeons/arrghus.asm ", pc
incsrc "Dungeons/Objects/object_handler.asm"
print "End of object_handler.asm ", pc
incsrc "Dungeons/spike_subtype.asm"
print "End of spike_subtype.asm ", pc
incsrc "Dungeons/Lanmola.asm"
print "End of Dungeons/Lanmola.asm ", pc
incsrc "Dungeons/Lanmola_Expanded.asm"
print "End of Dungeons/Lanmola_Expanded.asm ", pc
incsrc "Dungeons/house_tag.asm"
print "End of Dungeons/house_tag.asm ", pc
print "" print ""
; ------------------------------------------------------- ; -------------------------------------------------------
; Music ; Music
print " -- Music -- "
print ""
incsrc "Music/frozen_hyrule.asm" incsrc "Music/frozen_hyrule.asm"
print "End of Music/frozen_hyrule.asm ", pc print "End of Music/frozen_hyrule.asm ", pc
@@ -173,7 +143,6 @@ namespace Oracle
; ------------------------------------------------------- ; -------------------------------------------------------
incsrc "Util/all_items.asm" incsrc "Util/all_items.asm"
; print "End of Util/all_items.asm ", pc
incsrc "Dungeons/house_walls.asm" incsrc "Dungeons/house_walls.asm"

View File

@@ -4,6 +4,13 @@ org $0AB917 ; after most of the area loading after calling the bird takes place
org $028492 ; after leaving a dungeon org $028492 ; after leaving a dungeon
JSL CheckForChangeGraphicsNormalLoad JSL CheckForChangeGraphicsNormalLoad
org $02E94A
JSL CheckForSpecialAreaGraphics
org $0ED5A8
OverworldPalettesLoader:
org $00E19B org $00E19B
InitTilesets: InitTilesets:
@@ -26,9 +33,26 @@ CheckForChangeGraphicsNormalLoad:
.boat_area .boat_area
RTL RTL
} }
CheckForSpecialAreaGraphics:
{
JSL OverworldPalettesLoader
LDA $8A : CMP.b #$81 : BNE .korok_area
PHB : PHK : PLB
JSR ApplyKorokSpriteSheets
PLB
.korok_area
RTL
}
; ============================================================================== ; ==============================================================================
ApplyGraphics1: ApplyGraphics1:
@@ -53,3 +77,23 @@ ApplyGraphics1:
; ============================================================================== ; ==============================================================================
ApplyKorokSpriteSheets:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$5000 : STA $2116 ; Destination of the DMA $5800 in vram <- this need to be divided by 2
LDA #$1801 : STA $4300 ; DMA Transfer Mode and destination register
; "001 => 2 registers write once (2 bytes: p, p+1)"
LDA.w #KorokSpriteSheets : STA $4302 ; Source address where you want gfx from ROM
LDX.b #KorokSpriteSheets>>16 : STX $4304
LDA #$1800 : STA $4305 ; size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
SEP #$30
RTS
KorokSpriteSheets:
incbin gfx/korok.bin
}

View File

@@ -99,6 +99,7 @@ Sprite_SeaUrchin_Main:
Sprite_SeaUrchin_Draw: Sprite_SeaUrchin_Draw:
{
JSL Sprite_PrepOamCoord JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer JSL Sprite_OAM_AllocateDeferToPlayer
@@ -154,11 +155,6 @@ PLX
RTS RTS
;==================================================================================================
; Sprite Draw Generated Data
; --------------------------------------------------------------------------------------------------
; This is where the generated Data for the sprite go
;==================================================================================================
.start_index .start_index
db $00, $01, $02, $03, $04, $05, $06, $07 db $00, $01, $02, $03, $04, $05, $06, $07
.nbr_of_tiles .nbr_of_tiles
@@ -208,3 +204,4 @@ db $02
db $02 db $02
db $02 db $02
db $02 db $02
}

View File

@@ -1,6 +1,4 @@
;==============================================================================
; Sprite Properties
;==============================================================================
!SPRID = $25 ; The sprite ID you are overwriting (HEX) !SPRID = $25 ; The sprite ID you are overwriting (HEX)
!NbrTiles = 08 ; Number of tiles used in a frame !NbrTiles = 08 ; Number of tiles used in a frame
!Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless !Harmless = 01 ; 00 = Sprite is Harmful, 01 = Sprite is Harmless
@@ -9,7 +7,7 @@
!Damage = 00 ; (08 is a whole heart), 04 is half heart !Damage = 00 ; (08 is a whole heart), 04 is half heart
!DeathAnimation = 00 ; 00 = normal death, 01 = no death animation !DeathAnimation = 00 ; 00 = normal death, 01 = no death animation
!ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it !ImperviousAll = 00 ; 00 = Can be attack, 01 = attack will clink on it
!SmallShadow = 01 ; 01 = small shadow, 00 = no shadow !SmallShadow = 00 ; 01 = small shadow, 00 = no shadow
!Shadow = 01 ; 00 = don't draw shadow, 01 = draw a shadow !Shadow = 01 ; 00 = don't draw shadow, 01 = draw a shadow
!Palette = 00 ; Unused in this VillageDog (can be 0 to 7) !Palette = 00 ; Unused in this VillageDog (can be 0 to 7)
!Hitbox = 09 ; 00 to 31, can be viewed in sprite draw tool !Hitbox = 09 ; 00 to 31, can be viewed in sprite draw tool
@@ -31,11 +29,7 @@
%Set_Sprite_Properties(Sprite_VillageDog_Prep, Sprite_VillageDog_Long) %Set_Sprite_Properties(Sprite_VillageDog_Prep, Sprite_VillageDog_Long)
;==============================================================================
; Sprite Long Hook for that sprite
; This code can be left unchanged
; handle the draw code and if the sprite is active and should move or not
;==============================================================================
Sprite_VillageDog_Long: Sprite_VillageDog_Long:
{ {
PHB : PHK : PLB PHB : PHK : PLB
@@ -53,24 +47,14 @@ Sprite_VillageDog_Long:
} }
;==============================================================================
; Sprite initialization
; this code only get called once perfect to initialize sprites substate or timers
; this code as soon as the room transitions/ overworld transition occurs
;==============================================================================
Sprite_VillageDog_Prep: Sprite_VillageDog_Prep:
{
PHB : PHK : PLB PHB : PHK : PLB
; Add more code here to initialize data
PLB PLB
RTL RTL
}
;==============================================================================
; Sprite Main routines code
; This is the main local code of your sprite
; This contains all the Subroutines of your sprites you can add more below
;==============================================================================
Sprite_VillageDog_Main: Sprite_VillageDog_Main:
{ {
LDA.w SprAction, X ; Load the SprAction LDA.w SprAction, X ; Load the SprAction
@@ -83,6 +67,7 @@ Sprite_VillageDog_Main:
dw Dog_MoveRightTowardsLink ; 04 dw Dog_MoveRightTowardsLink ; 04
dw Dog_WagTailLeft ; 05 dw Dog_WagTailLeft ; 05
dw Dog_WagTailRight ; 06 dw Dog_WagTailRight ; 06
dw Dog_RandomMovement ; 07
; 0 ; 0
Dog_Handler: Dog_Handler:
@@ -108,7 +93,7 @@ Sprite_VillageDog_Main:
LDA.w SprTimerD, X : BNE + LDA.w SprTimerD, X : BNE +
; Load the timer for the run ; Load the timer for the run
LDA #$40 : STA.w SprTimerD, X LDA #$60 : STA.w SprTimerD, X
%GotoAction(3) %GotoAction(3)
+ +
RTS RTS
@@ -121,7 +106,7 @@ Sprite_VillageDog_Main:
LDA.w SprTimerD, X : BNE + LDA.w SprTimerD, X : BNE +
; Load the timer for the run ; Load the timer for the run
LDA #$40 : STA.w SprTimerD, X LDA #$60 : STA.w SprTimerD, X
%GotoAction(4) %GotoAction(4)
+ +
RTS RTS
@@ -131,11 +116,12 @@ Sprite_VillageDog_Main:
Dog_MoveLeftTowardsLink: Dog_MoveLeftTowardsLink:
{ {
%PlayAnimation(2,4,6) %PlayAnimation(2,4,6)
JSR CheckForSwitchToRandomMovement
JSL Sprite_DirectionToFacePlayer JSL Sprite_DirectionToFacePlayer
; Check if the dog is near link, then wag the tail ; Check if the dog is near link, then wag the tail
LDA $0E : CMP.b #$0070 : BCS + LDA $0E : CMP.b #$00A0 : BCS +
CLC CLC
LDA $0F : CMP.b #$0070 : BCS + LDA $0F : CMP.b #$00A0 : BCS +
%GotoAction(5) %GotoAction(5)
+ +
@@ -162,11 +148,12 @@ Sprite_VillageDog_Main:
{ {
%PlayAnimation(5,7,6) %PlayAnimation(5,7,6)
JSR CheckForSwitchToRandomMovement
JSL Sprite_DirectionToFacePlayer JSL Sprite_DirectionToFacePlayer
; Check if the dog is near link, then wag the tail ; Check if the dog is near link, then wag the tail
LDA $0E : CMP.b #$0070 : BCS + LDA $0E : CMP.b #$00A0 : BCS +
CLC CLC
LDA $0F : CMP.b #$0070 : BCS + LDA $0F : CMP.b #$00A0 : BCS +
%GotoAction(6) %GotoAction(6)
+ +
@@ -189,11 +176,7 @@ Sprite_VillageDog_Main:
Dog_WagTailLeft: Dog_WagTailLeft:
{ {
%PlayAnimation(0,1, 8) %PlayAnimation(0,1, 8)
LDA $02B2 : CMP.b #$05 : BNE .not_minish JSR ShowMessageIfMinish
%ShowSolicitedMessage($18) : JMP .continue
.not_minish
%ShowSolicitedMessage($1B)
.continue
LDA.w SprTimerD, X : BNE + LDA.w SprTimerD, X : BNE +
%GotoAction(0) %GotoAction(0)
+ +
@@ -204,25 +187,62 @@ Sprite_VillageDog_Main:
Dog_WagTailRight: Dog_WagTailRight:
{ {
%PlayAnimation(11,12,8) %PlayAnimation(11,12,8)
LDA $02B2 : CMP.b #$05 : BNE .not_minish JSR ShowMessageIfMinish
%ShowSolicitedMessage($18) : JMP .continue
.not_minish
%ShowSolicitedMessage($1B)
.continue
LDA.w SprTimerD, X : BNE + LDA.w SprTimerD, X : BNE +
%GotoAction(0) %GotoAction(0)
+ +
RTS RTS
} }
; 07
Dog_RandomMovement:
{
%PlayAnimation(2,4,6)
LDA.w SprTimerD, X : BNE +
; Load the timer for the run
LDA #$60 : STA.w SprTimerD, X
JSL GetRandomInt
AND.b #$03
BEQ .move_left
BNE .move_right
.move_left
%GotoAction(3)
RTS
.move_right
%GotoAction(4)
RTS
+
RTS
}
}
CheckForSwitchToRandomMovement:
{
; LDA.w SprTimerD, X : BNE +
; LDA #$60 : STA.w SprTimerD, X
; %GotoAction(7)
; +
RTS
}
ShowMessageIfMinish:
{
LDA $02B2 : CMP.b #$05 : BNE .not_minish
%ShowSolicitedMessage($18) : JMP .continue
.not_minish
%ShowSolicitedMessage($1B)
.continue
RTS
} }
;==============================================================================
; Sprite Draw code
; --------------------------------------------------------------------------------------------------
; Draw the tiles on screen with the data provided by the sprite maker editor
;==============================================================================
Sprite_VillageDog_Draw: Sprite_VillageDog_Draw:
{
JSL Sprite_PrepOamCoord JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer JSL Sprite_OAM_AllocateDeferToPlayer
@@ -278,10 +298,6 @@ PLX
RTS RTS
;==============================================================================
; Sprite Draw Generated Data
; This is where the generated Data for the sprite go
;==============================================================================
.start_index .start_index
db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26 db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26
.nbr_of_tiles .nbr_of_tiles
@@ -356,3 +372,4 @@ db $02
db $02 db $02
db $02, $02, $00, $00 db $02, $02, $00, $00
db $02, $02, $00, $00 db $02, $02, $00, $00
}

View File

@@ -126,7 +126,6 @@ macro HandlePlayerCamera()
endmacro endmacro
macro InitMovement() macro InitMovement()
LDA.b $22 LDA.b $22
STA.b $3F STA.b $3F
@@ -328,8 +327,11 @@ print "HandleTileDirections ", pc
HandleTileDirections: HandleTileDirections:
{ {
; Setup Minecart position to look for tile IDs ; Setup Minecart position to look for tile IDs
LDA.w SprY, X : STA.b $00 : LDA.w SprYH, X : STA.b $01 ; LDA.w SprY, X : STA.b $00 : LDA.w SprYH, X : STA.b $01
LDA.w SprX, X : STA.b $02 : LDA.w SprXH, X : STA.b $03 ; LDA.w SprX, X : STA.b $02 : LDA.w SprXH, X : STA.b $03
; Setup Minecart position to look for tile IDs
LDA.w SprY, X : AND #$F8 : STA.b $00 : LDA.w SprYH, X : STA.b $01
LDA.w SprX, X : AND #$F8 : STA.b $02 : LDA.w SprXH, X : STA.b $03
; Fetch tile attributes based on current coordinates ; Fetch tile attributes based on current coordinates
LDA.b #$00 : JSL Sprite_GetTileAttr LDA.b #$00 : JSL Sprite_GetTileAttr
@@ -640,8 +642,8 @@ CheckIfPlayerIsOn:
LDA $20 : CLC : ADC #$0012 : CMP $0FDA : BCC .OutsideUp LDA $20 : CLC : ADC #$0012 : CMP $0FDA : BCC .OutsideUp
LDA $20 : SEC : SBC #$0012 : CMP $0FDA : BCS .OutsideDown LDA $20 : SEC : SBC #$0012 : CMP $0FDA : BCS .OutsideDown
SEP #$21
RTS ;Return with carry setted SEP #$21 : RTS ; Return with carry set
.OutsideLeft .OutsideLeft
.OutsideRight .OutsideRight