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
; 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 $02, $02, $02, $02, $00, $00, $00, $00, $00, $00, $02, $01, $01, $01, $01, $01
db $00, $00, $02, $02, $02, $02, $02, $02, $02, $02, $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 $00, $00, $22, $00, $00, $00, $00, $00, $00, $00, $02, $02, $02, $02, $02, $02

View File

@@ -2,7 +2,7 @@
incsrc Collision/main.asm
org $018262 ;object id 0x31
org $018262 ;object id 0x31
dw ExpandedObject
@@ -64,19 +64,19 @@ NewObjectsCode:
RTL
.ObjOffset
dw .LeftRight-.ObjData ; 00
dw .UpDown-.ObjData ; 01
dw .TopLeft-.ObjData ; 02
dw .TopRight-.ObjData ; 03
dw .Bottomleft-.ObjData ; 04
dw .BottomRight-.ObjData ; 05
dw .UpDownFloor-.ObjData ; 06
dw .LeftRightFloor-.ObjData ; 07
dw .TopLeftFloor-.ObjData ; 08
dw .TopRightFloor-.ObjData ; 09
dw .BottomleftFloor-.ObjData; 10
dw .BottomRightFloor-.ObjData;11
dw .FloorAny-.ObjData ; 12
dw .LeftRight-.ObjData ; 00
dw .UpDown-.ObjData ; 01
dw .TopLeft-.ObjData ; 02
dw .TopRight-.ObjData ; 03
dw .Bottomleft-.ObjData ; 04
dw .BottomRight-.ObjData ; 05
dw .UpDownFloor-.ObjData ; 06
dw .LeftRightFloor-.ObjData ; 07
dw .TopLeftFloor-.ObjData ; 08
dw .TopRightFloor-.ObjData ; 09
dw .BottomleftFloor-.ObjData ; 10
dw .BottomRightFloor-.ObjData ; 11
dw .FloorAny-.ObjData ; 12
.ObjData
.LeftRight

View File

@@ -11,18 +11,18 @@
; 26 - N/A
; 27 - N/A
; 28 - ZS Reserved
; 29 - ZSprite Engine
; 2A - Sprites: all_sprites.asm
; 29 - ZS Reserved
; 2A - ZS Reserved
; 2B - Items: all_items.asm
; 2C - Dungeon Objects, Spike Subtype
; 2C - Dungeon Objects, Spike Subtype, Together Warp Tag
; 2D - Menu
; 2E - HUD
; 2F - House Tag
; 30 - N/A
; 31 - Deku Link Code
; 32 - Entrance Music Fix
; 33 - Together Warp Tag
; 34 - N/A
; 30 - ZSprite Engine
; 31 - Sprites: all_sprites.asm
; 32 - Entrance Music Fix
; 33 - Custom Collision Tables
; 34 - Deku Link Code
; 35 - Deku Link GFX
; 36 - Zora Link GFX
; 37 - Bunny Link GFX
@@ -75,46 +75,16 @@ namespace Oracle
print " -- Dungeon -- "
print ""
incsrc "Dungeons/keyblock.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
incsrc "Dungeons/dungeons.asm"
print ""
; -------------------------------------------------------
; Music
print " -- Music -- "
print ""
incsrc "Music/frozen_hyrule.asm"
print "End of Music/frozen_hyrule.asm ", pc
@@ -173,7 +143,6 @@ namespace Oracle
; -------------------------------------------------------
incsrc "Util/all_items.asm"
; print "End of Util/all_items.asm ", pc
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
JSL CheckForChangeGraphicsNormalLoad
org $02E94A
JSL CheckForSpecialAreaGraphics
org $0ED5A8
OverworldPalettesLoader:
org $00E19B
InitTilesets:
@@ -26,22 +33,39 @@ CheckForChangeGraphicsNormalLoad:
.boat_area
RTL
}
CheckForSpecialAreaGraphics:
{
JSL OverworldPalettesLoader
LDA $8A : CMP.b #$81 : BNE .korok_area
PHB : PHK : PLB
JSR ApplyKorokSpriteSheets
PLB
.korok_area
RTL
}
; ==============================================================================
ApplyGraphics1:
{
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$2C00 : 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
REP #$20 ; A = 16, XY = 8
LDX #$80 : STX $2115 ; Set the video port register every time we write it increase by 1
LDA #$2C00 : 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 #BoatBitmap : STA $4302 ; Source address where you want gfx from ROM
LDA.w #BoatBitmap : STA $4302 ; Source address where you want gfx from ROM
LDX.b #BoatBitmap>>16 : STX $4304
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
LDA #$2000 : STA $4305 ; size of the transfer 4 sheets of $800 each
LDX #$01 : STX $420B ; Do the DMA
SEP #$30
@@ -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:
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 .start_index, Y : STA $06
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHX ; Save current Tile Index?
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
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
SEP #$20
BCC .on_screen_y
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
SEP #$20
BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
LDA .chr, X : STA ($90), Y
INY
LDA .properties, X : STA ($90), Y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
LDA .chr, X : STA ($90), Y
INY
LDA .properties, X : STA ($90), Y
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX
PLX
RTS
RTS
;==================================================================================================
; Sprite Draw Generated Data
; --------------------------------------------------------------------------------------------------
; This is where the generated Data for the sprite go
;==================================================================================================
.start_index
db $00, $01, $02, $03, $04, $05, $06, $07
.nbr_of_tiles
db 0, 0, 0, 0, 0, 0, 0, 0
.x_offsets
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
.y_offsets
dw 0
dw -1
dw 0
dw -1
dw 0
dw -1
dw 0
dw -1
.chr
db $E6
db $E8
db $E6
db $E8
db $E6
db $E8
db $E6
db $E8
.properties
db $39
db $39
db $79
db $79
db $39
db $39
db $79
db $79
.sizes
db $02
db $02
db $02
db $02
db $02
db $02
db $02
db $02
.start_index
db $00, $01, $02, $03, $04, $05, $06, $07
.nbr_of_tiles
db 0, 0, 0, 0, 0, 0, 0, 0
.x_offsets
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
dw 0
.y_offsets
dw 0
dw -1
dw 0
dw -1
dw 0
dw -1
dw 0
dw -1
.chr
db $E6
db $E8
db $E6
db $E8
db $E6
db $E8
db $E6
db $E8
.properties
db $39
db $39
db $79
db $79
db $39
db $39
db $79
db $79
.sizes
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)
!NbrTiles = 08 ; Number of tiles used in a frame
!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
!DeathAnimation = 00 ; 00 = normal death, 01 = no death animation
!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
!Palette = 00 ; Unused in this VillageDog (can be 0 to 7)
!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)
;==============================================================================
; 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:
{
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:
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:
{
LDA.w SprAction, X ; Load the SprAction
@@ -83,6 +67,7 @@ Sprite_VillageDog_Main:
dw Dog_MoveRightTowardsLink ; 04
dw Dog_WagTailLeft ; 05
dw Dog_WagTailRight ; 06
dw Dog_RandomMovement ; 07
; 0
Dog_Handler:
@@ -91,7 +76,7 @@ Sprite_VillageDog_Main:
LDA #$20 : STA.w SprTimerD, X
JSL Sprite_IsToRightOfPlayer ; Check if sprite is to the right of player
TYA : BEQ .WalkRight ; If so, go to LookLeft
TYA : BEQ .WalkRight ; If so, go to LookLeft
%GotoAction(3)
RTS
@@ -108,7 +93,7 @@ Sprite_VillageDog_Main:
LDA.w SprTimerD, X : BNE +
; Load the timer for the run
LDA #$40 : STA.w SprTimerD, X
LDA #$60 : STA.w SprTimerD, X
%GotoAction(3)
+
RTS
@@ -121,7 +106,7 @@ Sprite_VillageDog_Main:
LDA.w SprTimerD, X : BNE +
; Load the timer for the run
LDA #$40 : STA.w SprTimerD, X
LDA #$60 : STA.w SprTimerD, X
%GotoAction(4)
+
RTS
@@ -131,11 +116,12 @@ Sprite_VillageDog_Main:
Dog_MoveLeftTowardsLink:
{
%PlayAnimation(2,4,6)
JSR CheckForSwitchToRandomMovement
JSL Sprite_DirectionToFacePlayer
; Check if the dog is near link, then wag the tail
LDA $0E : CMP.b #$0070 : BCS +
LDA $0E : CMP.b #$00A0 : BCS +
CLC
LDA $0F : CMP.b #$0070 : BCS +
LDA $0F : CMP.b #$00A0 : BCS +
%GotoAction(5)
+
@@ -162,11 +148,12 @@ Sprite_VillageDog_Main:
{
%PlayAnimation(5,7,6)
JSR CheckForSwitchToRandomMovement
JSL Sprite_DirectionToFacePlayer
; Check if the dog is near link, then wag the tail
LDA $0E : CMP.b #$0070 : BCS +
LDA $0E : CMP.b #$00A0 : BCS +
CLC
LDA $0F : CMP.b #$0070 : BCS +
LDA $0F : CMP.b #$00A0 : BCS +
%GotoAction(6)
+
@@ -189,11 +176,7 @@ Sprite_VillageDog_Main:
Dog_WagTailLeft:
{
%PlayAnimation(0,1, 8)
LDA $02B2 : CMP.b #$05 : BNE .not_minish
%ShowSolicitedMessage($18) : JMP .continue
.not_minish
%ShowSolicitedMessage($1B)
.continue
JSR ShowMessageIfMinish
LDA.w SprTimerD, X : BNE +
%GotoAction(0)
+
@@ -204,155 +187,189 @@ Sprite_VillageDog_Main:
Dog_WagTailRight:
{
%PlayAnimation(11,12,8)
LDA $02B2 : CMP.b #$05 : BNE .not_minish
%ShowSolicitedMessage($18) : JMP .continue
.not_minish
%ShowSolicitedMessage($1B)
.continue
JSR ShowMessageIfMinish
LDA.w SprTimerD, X : BNE +
%GotoAction(0)
+
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:
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 .start_index, Y : STA $06
LDA $0DC0, X : CLC : ADC $0D90, X : TAY;Animation Frame
LDA .start_index, Y : STA $06
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX
LDX .nbr_of_tiles, Y ;amount of tiles -1
LDY.b #$00
.nextTile
PHX ; Save current Tile Index?
TXA : CLC : ADC $06 ; Add Animation Index Offset
PHX ; Save current Tile Index?
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
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
SEP #$20
BCC .on_screen_y
LDA $00 : CLC : ADC .x_offsets, X : STA ($90), Y
AND.w #$0100 : STA $0E
INY
LDA $02 : CLC : ADC .y_offsets, X : STA ($90), Y
CLC : ADC #$0010 : CMP.w #$0100
SEP #$20
BCC .on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
LDA.b #$F0 : STA ($90), Y ;Put the sprite out of the way
STA $0E
.on_screen_y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
LDA .chr, X : STA ($90), Y
INY
LDA .properties, X : STA ($90), Y
PLX ; Pullback Animation Index Offset (without the *2 not 16bit anymore)
INY
LDA .chr, X : STA ($90), Y
INY
LDA .properties, X : STA ($90), Y
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PHY
TYA : LSR #2 : TAY
LDA .sizes, X : ORA $0F : STA ($92), Y ; store size in oam buffer
PLY : INY
PLX : DEX : BPL .nextTile
PLX
PLX
RTS
RTS
;==============================================================================
; Sprite Draw Generated Data
; This is where the generated Data for the sprite go
;==============================================================================
.start_index
db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26
.nbr_of_tiles
db 3, 3, 3, 3, 2, 3, 3, 3, 0, 0, 0, 3, 3
.x_offsets
dw -4, -4, 12, 12
dw -4, -4, 12, 12
dw -4, -4, 4, 12
dw -4, -4, 4, 4
dw -4, 4, 4
dw 4, -4, 4, -4
dw 4, -4, 4, -4
dw 4, -4, -4, -4
dw 0
dw 0
dw 0
dw 8, 8, 0, 0
dw 8, 8, 0, 0
.y_offsets
dw -4, 4, 4, 12
dw -4, 4, 4, 12
dw -8, 0, 0, -8
dw 0, -8, -8, 0
dw 0, 0, -16
dw 0, 0, -8, -8
dw 0, 0, -16, -8
dw 0, 0, 8, -8
dw 0
dw 0
dw 0
dw -4, 4, 4, 12
dw -4, 4, 4, 12
.chr
db $10, $20, $22, $32
db $10, $20, $02, $12
db $13, $23, $24, $15
db $26, $16, $17, $27
db $29, $2A, $0A
db $23, $24, $13, $14
db $26, $27, $06, $18
db $29, $2B, $3B, $1B
db $2C
db $2E
db $2E
db $10, $20, $22, $32
db $10, $20, $02, $12
.properties
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37
db $77, $77, $77, $77
db $77, $77, $77, $77
db $77, $77, $77, $77
db $37
db $77
db $37
db $77, $77, $77, $77
db $77, $77, $77, $77
.sizes
db $02, $02, $00, $00
db $02, $02, $00, $00
db $02, $02, $02, $00
db $02, $02, $02, $02
db $02, $02, $02
db $02, $02, $02, $02
db $02, $02, $02, $00
db $02, $00, $00, $00
db $02
db $02
db $02
db $02, $02, $00, $00
db $02, $02, $00, $00
.start_index
db $00, $04, $08, $0C, $10, $13, $17, $1B, $1F, $20, $21, $22, $26
.nbr_of_tiles
db 3, 3, 3, 3, 2, 3, 3, 3, 0, 0, 0, 3, 3
.x_offsets
dw -4, -4, 12, 12
dw -4, -4, 12, 12
dw -4, -4, 4, 12
dw -4, -4, 4, 4
dw -4, 4, 4
dw 4, -4, 4, -4
dw 4, -4, 4, -4
dw 4, -4, -4, -4
dw 0
dw 0
dw 0
dw 8, 8, 0, 0
dw 8, 8, 0, 0
.y_offsets
dw -4, 4, 4, 12
dw -4, 4, 4, 12
dw -8, 0, 0, -8
dw 0, -8, -8, 0
dw 0, 0, -16
dw 0, 0, -8, -8
dw 0, 0, -16, -8
dw 0, 0, 8, -8
dw 0
dw 0
dw 0
dw -4, 4, 4, 12
dw -4, 4, 4, 12
.chr
db $10, $20, $22, $32
db $10, $20, $02, $12
db $13, $23, $24, $15
db $26, $16, $17, $27
db $29, $2A, $0A
db $23, $24, $13, $14
db $26, $27, $06, $18
db $29, $2B, $3B, $1B
db $2C
db $2E
db $2E
db $10, $20, $22, $32
db $10, $20, $02, $12
.properties
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37, $37
db $37, $37, $37
db $77, $77, $77, $77
db $77, $77, $77, $77
db $77, $77, $77, $77
db $37
db $77
db $37
db $77, $77, $77, $77
db $77, $77, $77, $77
.sizes
db $02, $02, $00, $00
db $02, $02, $00, $00
db $02, $02, $02, $00
db $02, $02, $02, $02
db $02, $02, $02
db $02, $02, $02, $02
db $02, $02, $02, $00
db $02, $00, $00, $00
db $02
db $02
db $02
db $02, $02, $00, $00
db $02, $02, $00, $00
}

View File

@@ -126,18 +126,17 @@ macro HandlePlayerCamera()
endmacro
macro InitMovement()
LDA.b $22
STA.b $3F
LDA.b $22
STA.b $3F
LDA.b $23
STA.b $41
LDA.b $23
STA.b $41
LDA.b $20
STA.b $3E
LDA.b $20
STA.b $3E
LDA.b $21
STA.b $40
LDA.b $21
STA.b $40
endmacro
Sprite_Minecart_Main:
@@ -215,11 +214,11 @@ Sprite_Minecart_Main:
LDA $36 : BNE .fast_speed
LDA.b #-!MinecartSpeed : STA SprYSpeed, X
JMP .continue
JMP .continue
.fast_speed
LDA.b #-!DoubleSpeed : STA SprYSpeed, X
.continue
JSL Sprite_MoveVert
JSL Sprite_MoveVert
; LDA SprY, X : SEC : SBC #$04 : STA $20
; LDA SprX, X : CLC : ADC #$02 : STA $22
@@ -241,11 +240,11 @@ Sprite_Minecart_Main:
%InitMovement()
LDA $36 : BNE .fast_speed
LDA.b #!MinecartSpeed : STA $0D50, X
JMP .continue
JMP .continue
.fast_speed
LDA.b #!DoubleSpeed : STA $0D50, X
.continue
JSL Sprite_MoveHoriz
JSL Sprite_MoveHoriz
JSR DragPlayer
JSR CheckForPlayerInput
@@ -264,11 +263,11 @@ Sprite_Minecart_Main:
%InitMovement()
LDA $36 : BNE .fast_speed
LDA.b #!MinecartSpeed : STA SprYSpeed, X
JMP .continue
JMP .continue
.fast_speed
LDA.b #!DoubleSpeed : STA SprYSpeed, X
.continue
JSL Sprite_MoveVert
JSL Sprite_MoveVert
JSR DragPlayer
JSR CheckForPlayerInput
@@ -285,13 +284,13 @@ Sprite_Minecart_Main:
{
%PlayAnimation(0,1,8)
%InitMovement()
LDA $36 : BNE .fast_speed
LDA $36 : BNE .fast_speed
LDA.b #-!MinecartSpeed : STA $0D50, X
JMP .continue
.fast_speed
LDA.b #-!DoubleSpeed : STA $0D50, X
.continue
JSL Sprite_MoveHoriz
JSL Sprite_MoveHoriz
JSR DragPlayer
JSR CheckForPlayerInput
@@ -328,8 +327,11 @@ print "HandleTileDirections ", pc
HandleTileDirections:
{
; Setup Minecart position to look for tile IDs
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 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
; 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
LDA.b #$00 : JSL Sprite_GetTileAttr
@@ -640,15 +642,15 @@ CheckIfPlayerIsOn:
LDA $20 : CLC : ADC #$0012 : CMP $0FDA : BCC .OutsideUp
LDA $20 : SEC : SBC #$0012 : CMP $0FDA : BCS .OutsideDown
SEP #$21
RTS ;Return with carry setted
SEP #$21 : RTS ; Return with carry set
.OutsideLeft
.OutsideRight
.OutsideDown
.OutsideUp
SEP #$20
CLC : RTS ;Return with carry cleared
CLC : RTS ; Return with carry cleared
}
;==============================================================================