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

@@ -74,8 +74,8 @@ NewObjectsCode:
dw .LeftRightFloor-.ObjData ; 07 dw .LeftRightFloor-.ObjData ; 07
dw .TopLeftFloor-.ObjData ; 08 dw .TopLeftFloor-.ObjData ; 08
dw .TopRightFloor-.ObjData ; 09 dw .TopRightFloor-.ObjData ; 09
dw .BottomleftFloor-.ObjData; 10 dw .BottomleftFloor-.ObjData ; 10
dw .BottomRightFloor-.ObjData;11 dw .BottomRightFloor-.ObjData ; 11
dw .FloorAny-.ObjData ; 12 dw .FloorAny-.ObjData ; 12
.ObjData .ObjData

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,112 +99,109 @@ Sprite_SeaUrchin_Main:
Sprite_SeaUrchin_Draw: Sprite_SeaUrchin_Draw:
JSL Sprite_PrepOamCoord {
JSL Sprite_OAM_AllocateDeferToPlayer JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06 LDA .start_index, Y : STA $06
PHX PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1 LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00 LDY.b #$00
.nextTile .nextTile
PHX ; Save current Tile Index? PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset? PHA ; Keep the value with animation index offset?
ASL A : TAX ASL A : TAX
REP #$20 REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E AND.w #$0100 : STA $0E
INY INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100 CLC : ADC #$0010 : CMP.w #$0100
SEP #$20 SEP #$20
BCC .on_screen_y BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E STA $0E
.on_screen_y .on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY INY
LDA .chr, X : STA ($90), Y LDA .chr, X : STA ($90), Y
INY INY
LDA .properties, X : STA ($90), Y LDA .properties, X : STA ($90), Y
PHY PHY
TYA : LSR #2 : TAY TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY PLY : INY
PLX : DEX : BPL .nextTile PLX : DEX : BPL .nextTile
PLX PLX
RTS RTS
;================================================================================================== .start_index
; Sprite Draw Generated Data db $00, $01, $02, $03, $04, $05, $06, $07
; -------------------------------------------------------------------------------------------------- .nbr_of_tiles
; This is where the generated Data for the sprite go db 0, 0, 0, 0, 0, 0, 0, 0
;================================================================================================== .x_offsets
.start_index dw 0
db $00, $01, $02, $03, $04, $05, $06, $07 dw 0
.nbr_of_tiles dw 0
db 0, 0, 0, 0, 0, 0, 0, 0 dw 0
.x_offsets dw 0
dw 0 dw 0
dw 0 dw 0
dw 0 dw 0
dw 0 .y_offsets
dw 0 dw 0
dw 0 dw -1
dw 0 dw 0
dw 0 dw -1
.y_offsets dw 0
dw 0 dw -1
dw -1 dw 0
dw 0 dw -1
dw -1 .chr
dw 0 db $E6
dw -1 db $E8
dw 0 db $E6
dw -1 db $E8
.chr db $E6
db $E6 db $E8
db $E8 db $E6
db $E6 db $E8
db $E8 .properties
db $E6 db $39
db $E8 db $39
db $E6 db $79
db $E8 db $79
.properties db $39
db $39 db $39
db $39 db $79
db $79 db $79
db $79 .sizes
db $39 db $02
db $39 db $02
db $79 db $02
db $79 db $02
.sizes db $02
db $02 db $02
db $02 db $02
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
RTL
}
PLB
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,155 +187,189 @@ 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_OAM_AllocateDeferToPlayer JSL Sprite_PrepOamCoord
JSL Sprite_OAM_AllocateDeferToPlayer
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06 LDA .start_index, Y : STA $06
PHX PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1 LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00 LDY.b #$00
.nextTile .nextTile
PHX ; Save current Tile Index? PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset TXA : CLC : ADC $06 ; Add Animation Index Offset
PHA ; Keep the value with animation index offset? PHA ; Keep the value with animation index offset?
ASL A : TAX ASL A : TAX
REP #$20 REP #$20
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E AND.w #$0100 : STA $0E
INY INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100 CLC : ADC #$0010 : CMP.w #$0100
SEP #$20 SEP #$20
BCC .on_screen_y BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E STA $0E
.on_screen_y .on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore) PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY INY
LDA .chr, X : STA ($90), Y LDA .chr, X : STA ($90), Y
INY INY
LDA .properties, X : STA ($90), Y LDA .properties, X : STA ($90), Y
PHY PHY
TYA : LSR #2 : TAY TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY PLY : INY
PLX : DEX : BPL .nextTile PLX : DEX : BPL .nextTile
PLX PLX
RTS RTS
;============================================================================== .start_index
; Sprite Draw Generated Data db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26
; This is where the generated Data for the sprite go .nbr_of_tiles
;============================================================================== db 3, 3, 3, 3, 2, 3, 3, 3, 0, 0, 0, 3, 3
.start_index .x_offsets
db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26 dw -4, -4, 12, 12
.nbr_of_tiles dw -4, -4, 12, 12
db 3, 3, 3, 3, 2, 3, 3, 3, 0, 0, 0, 3, 3 dw -4, -4, 4, 12
.x_offsets dw -4, -4, 4, 4
dw -4, -4, 12, 12 dw -4, 4, 4
dw -4, -4, 12, 12 dw 4, -4, 4, -4
dw -4, -4, 4, 12 dw 4, -4, 4, -4
dw -4, -4, 4, 4 dw 4, -4, -4, -4
dw -4, 4, 4 dw 0
dw 4, -4, 4, -4 dw 0
dw 4, -4, 4, -4 dw 0
dw 4, -4, -4, -4 dw 8, 8, 0, 0
dw 0 dw 8, 8, 0, 0
dw 0 .y_offsets
dw 0 dw -4, 4, 4, 12
dw 8, 8, 0, 0 dw -4, 4, 4, 12
dw 8, 8, 0, 0 dw -8, 0, 0, -8
.y_offsets dw 0, -8, -8, 0
dw -4, 4, 4, 12 dw 0, 0, -16
dw -4, 4, 4, 12 dw 0, 0, -8, -8
dw -8, 0, 0, -8 dw 0, 0, -16, -8
dw 0, -8, -8, 0 dw 0, 0, 8, -8
dw 0, 0, -16 dw 0
dw 0, 0, -8, -8 dw 0
dw 0, 0, -16, -8 dw 0
dw 0, 0, 8, -8 dw -4, 4, 4, 12
dw 0 dw -4, 4, 4, 12
dw 0 .chr
dw 0 db $10, $20, $22, $32
dw -4, 4, 4, 12 db $10, $20, $02, $12
dw -4, 4, 4, 12 db $13, $23, $24, $15
.chr db $26, $16, $17, $27
db $10, $20, $22, $32 db $29, $2A, $0A
db $10, $20, $02, $12 db $23, $24, $13, $14
db $13, $23, $24, $15 db $26, $27, $06, $18
db $26, $16, $17, $27 db $29, $2B, $3B, $1B
db $29, $2A, $0A db $2C
db $23, $24, $13, $14 db $2E
db $26, $27, $06, $18 db $2E
db $29, $2B, $3B, $1B db $10, $20, $22, $32
db $2C db $10, $20, $02, $12
db $2E .properties
db $2E db $37, $37, $37, $37
db $10, $20, $22, $32 db $37, $37, $37, $37
db $10, $20, $02, $12 db $37, $37, $37, $37
.properties db $37, $37, $37, $37
db $37, $37, $37, $37 db $37, $37, $37
db $37, $37, $37, $37 db $77, $77, $77, $77
db $37, $37, $37, $37 db $77, $77, $77, $77
db $37, $37, $37, $37 db $77, $77, $77, $77
db $37, $37, $37 db $37
db $77, $77, $77, $77 db $77
db $77, $77, $77, $77 db $37
db $77, $77, $77, $77 db $77, $77, $77, $77
db $37 db $77, $77, $77, $77
db $77 .sizes
db $37 db $02, $02, $00, $00
db $77, $77, $77, $77 db $02, $02, $00, $00
db $77, $77, $77, $77 db $02, $02, $02, $00
.sizes db $02, $02, $02, $02
db $02, $02, $00, $00 db $02, $02, $02
db $02, $02, $00, $00 db $02, $02, $02, $02
db $02, $02, $02, $00 db $02, $02, $02, $00
db $02, $02, $02, $02 db $02, $00, $00, $00
db $02, $02, $02 db $02
db $02, $02, $02, $02 db $02
db $02, $02, $02, $00 db $02
db $02, $00, $00, $00 db $02, $02, $00, $00
db $02 db $02, $02, $00, $00
db $02 }
db $02
db $02, $02, $00, $00
db $02, $02, $00, $00

View File

@@ -126,15 +126,14 @@ macro HandlePlayerCamera()
endmacro endmacro
macro InitMovement() macro InitMovement()
LDA.b $22 LDA.b $22
STA.b $3F STA.b $3F
LDA.b $23 LDA.b $23
STA.b $41 STA.b $41
LDA.b $20 LDA.b $20
STA.b $3E STA.b $3E
LDA.b $21 LDA.b $21
STA.b $40 STA.b $40
@@ -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,15 +642,15 @@ 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
.OutsideDown .OutsideDown
.OutsideUp .OutsideUp
SEP #$20 SEP #$20
CLC : RTS ;Return with carry cleared CLC : RTS ; Return with carry cleared
} }
;============================================================================== ;==============================================================================