diff options
author | entrpntr <entrpntr@gmail.com> | 2020-03-17 15:23:39 -0400 |
---|---|---|
committer | entrpntr <entrpntr@gmail.com> | 2020-03-17 15:23:39 -0400 |
commit | c248b30aa7487b51a9182a833b1db29f14a7267c (patch) | |
tree | ea00fee853340ff7a4b2ab2da8cb902105e854f1 | |
parent | d7327a64949c5abb607299184507c89e4c4f1387 (diff) |
Cleanup of files for banks $01 and $04 for main.asm.
-rw-r--r--[-rwxr-xr-x] | data/items/attributes.asm (renamed from items/item_attributes.asm) | 1 | ||||
-rwxr-xr-x | data/map_objects.asm | 44 | ||||
-rw-r--r-- | data/sprites/facings.asm | 239 | ||||
-rw-r--r-- | data/sprites/map_objects.asm | 306 | ||||
-rw-r--r-- | engine/facings.asm | 265 | ||||
-rw-r--r-- | engine/gfx/load_push_oam.asm | 24 | ||||
-rwxr-xr-x | engine/math/math.asm (renamed from engine/math.asm) | 0 | ||||
-rw-r--r--[-rwxr-xr-x] | engine/menus/intro_menu.asm (renamed from engine/main_menu.asm) | 451 | ||||
-rw-r--r-- | engine/overworld/init_map.asm | 91 | ||||
-rwxr-xr-x | engine/overworld/map_objects.asm | 7 | ||||
-rw-r--r-- | engine/pokemon/correct_nick_errors.asm | 53 | ||||
-rw-r--r-- | engine/pokemon/learn.asm (renamed from engine/learn.asm) | 0 | ||||
-rwxr-xr-x | engine/title.asm | 450 | ||||
-rw-r--r-- | main.asm | 188 |
14 files changed, 1176 insertions, 943 deletions
diff --git a/items/item_attributes.asm b/data/items/attributes.asm index 14ce8e92..90316996 100755..100644 --- a/items/item_attributes.asm +++ b/data/items/attributes.asm @@ -5,6 +5,7 @@ item_attribute: MACRO dn \6, \7 ENDM +ItemAttributes: Item1Attributes: ; MASTER BALL diff --git a/data/map_objects.asm b/data/map_objects.asm deleted file mode 100755 index fe218e42..00000000 --- a/data/map_objects.asm +++ /dev/null @@ -1,44 +0,0 @@ -sprite_movement_data: macro - db \1, \2, \3, \4, \5 - dn \6, 0 -endm - - ; function, facing, action, flags1, flags2, palette flags - sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 00 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 01 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 02 - sprite_movement_data SPRITEMOVEFN_SLOW_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 03 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_Y, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 04 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_X, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 05 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 06 - sprite_movement_data SPRITEMOVEFN_STANDING, UP, OBJECT_ACTION_STAND, $00, $00, %0000 ; 07 - sprite_movement_data SPRITEMOVEFN_STANDING, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 08 - sprite_movement_data SPRITEMOVEFN_STANDING, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 09 - sprite_movement_data SPRITEMOVEFN_FAST_RANDOM_SPIN, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0a - sprite_movement_data SPRITEMOVEFN_OBEY_DPAD, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 0b - sprite_movement_data SPRITEMOVEFN_08, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0c - sprite_movement_data SPRITEMOVEFN_09, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0d - sprite_movement_data SPRITEMOVEFN_0A, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0e - sprite_movement_data SPRITEMOVEFN_0B, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 0f - sprite_movement_data SPRITEMOVEFN_0C, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 10 - sprite_movement_data SPRITEMOVEFN_0D, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 11 - sprite_movement_data SPRITEMOVEFN_0E, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 12 - sprite_movement_data SPRITEMOVEFN_FOLLOW, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 13 - sprite_movement_data SPRITEMOVEFN_SCRIPTED, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 14 - sprite_movement_data SPRITEMOVEFN_BIG_SNORLAX, DOWN, OBJECT_ACTION_BIG_DOLL_SYM, $2e, $01, %1100 ; 15 - sprite_movement_data SPRITEMOVEFN_BOUNCE, DOWN, OBJECT_ACTION_BOUNCE, $2e, $00, %0000 ; 16 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $0c, $00, %0000 ; 17 - sprite_movement_data SPRITEMOVEFN_STANDING, DOWN, OBJECT_ACTION_STAND, $2e, $10, %0000 ; 18 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_STAND, $2e, $00, %0100 ; 19 - sprite_movement_data SPRITEMOVEFN_FOLLOWNOTEXACT, DOWN, OBJECT_ACTION_STAND, $02, $00, %0000 ; 1a - sprite_movement_data SPRITEMOVEFN_SHADOW, DOWN, OBJECT_ACTION_00, $8e, $01, %0000 ; 1b - sprite_movement_data SPRITEMOVEFN_EMOTE, DOWN, OBJECT_ACTION_EMOTE, $8e, $02, %0000 ; 1c - sprite_movement_data SPRITEMOVEFN_SCREENSHAKE, DOWN, OBJECT_ACTION_00, $82, $00, %0000 ; 1d - sprite_movement_data SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE, LEFT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1e - sprite_movement_data SPRITEMOVEFN_SPIN_CLOCKWISE, RIGHT, OBJECT_ACTION_STAND, $00, $00, %0000 ; 1f - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL_ASYM, $2e, $01, %1100 ; 20 - sprite_movement_data SPRITEMOVEFN_STRENGTH, DOWN, OBJECT_ACTION_BIG_DOLL, $2e, $01, %1100 ; 21 - sprite_movement_data SPRITEMOVEFN_BOULDERDUST, DOWN, OBJECT_ACTION_BOULDER_DUST, $8e, $01, %0000 ; 22 - sprite_movement_data SPRITEMOVEFN_GRASS, DOWN, OBJECT_ACTION_GRASS_SHAKE, $8e, $02, %0000 ; 23 - sprite_movement_data SPRITEMOVEFN_RANDOM_WALK_XY, DOWN, OBJECT_ACTION_STAND, $00, $00, %0010 ; 24 - sprite_movement_data SPRITEMOVEFN_00, DOWN, OBJECT_ACTION_STAND, $00, $00, %0000 ; 25 diff --git a/data/sprites/facings.asm b/data/sprites/facings.asm new file mode 100644 index 00000000..ccf91082 --- /dev/null +++ b/data/sprites/facings.asm @@ -0,0 +1,239 @@ +Facings: +; entries correspond to FACING_* constants + dw FacingStepDown0 + dw FacingStepDown1 + dw FacingStepDown2 + dw FacingStepDown3 + dw FacingStepUp0 + dw FacingStepUp1 + dw FacingStepUp2 + dw FacingStepUp3 + dw FacingStepLeft0 + dw FacingStepLeft1 + dw FacingStepLeft2 + dw FacingStepLeft3 + dw FacingStepRight0 + dw FacingStepRight1 + dw FacingStepRight2 + dw FacingStepRight3 + dw FacingFishDown + dw FacingFishUp + dw FacingFishLeft + dw FacingFishRight + dw FacingEmote + dw FacingShadow + dw FacingBigDollAsymmetric + dw FacingBigDollSymmetric + dw FacingWeirdTree0 + dw FacingWeirdTree1 + dw FacingWeirdTree2 + dw FacingWeirdTree3 + dw FacingBoulderDust1 + dw FacingBoulderDust2 + dw FacingGrass1 + dw FacingGrass2 +.End + dw 0 + +NUM_FACINGS EQU (Facings.End - Facings) / 2 + +; Tables used as a reference to transform OAM data. + +; Format: +; db y, x, attributes, tile index + +FacingStepDown0: +FacingStepDown2: +FacingWeirdTree0: +FacingWeirdTree2: ; standing down + db 4 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, RELATIVE_ATTRIBUTES, $02 + db 8, 8, RELATIVE_ATTRIBUTES, $03 + +FacingStepDown1: ; walking down 1 + db 4 ; # + db 0, 0, 0, $80 + db 0, 8, 0, $81 + db 8, 0, RELATIVE_ATTRIBUTES, $82 + db 8, 8, RELATIVE_ATTRIBUTES, $83 + +FacingStepDown3: ; walking down 2 + db 4 ; # + db 0, 8, X_FLIP, $80 + db 0, 0, X_FLIP, $81 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $82 + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $83 + +FacingStepUp0: +FacingStepUp2: ; standing up + db 4 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, RELATIVE_ATTRIBUTES, $06 + db 8, 8, RELATIVE_ATTRIBUTES, $07 + +FacingStepUp1: ; walking up 1 + db 4 ; # + db 0, 0, 0, $84 + db 0, 8, 0, $85 + db 8, 0, RELATIVE_ATTRIBUTES, $86 + db 8, 8, RELATIVE_ATTRIBUTES, $87 + +FacingStepUp3: ; walking up 2 + db 4 ; # + db 0, 8, X_FLIP, $84 + db 0, 0, X_FLIP, $85 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $86 + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $87 + +FacingStepLeft0: +FacingStepLeft2: ; standing left + db 4 ; # + db 0, 0, 0, $08 + db 0, 8, 0, $09 + db 8, 0, RELATIVE_ATTRIBUTES, $0a + db 8, 8, RELATIVE_ATTRIBUTES, $0b + +FacingStepRight0: +FacingStepRight2: ; standing right + db 4 ; # + db 0, 8, X_FLIP, $08 + db 0, 0, X_FLIP, $09 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b + +FacingStepLeft1: +FacingStepLeft3: ; walking left + db 4 ; # + db 0, 0, 0, $88 + db 0, 8, 0, $89 + db 8, 0, RELATIVE_ATTRIBUTES, $8a + db 8, 8, RELATIVE_ATTRIBUTES, $8b + +FacingStepRight1: +FacingStepRight3: ; walking right + db 4 ; # + db 0, 8, X_FLIP, $88 + db 0, 0, X_FLIP, $89 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $8a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $8b + +FacingFishDown: ; fishing down + db 5 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, RELATIVE_ATTRIBUTES, $02 + db 8, 8, RELATIVE_ATTRIBUTES, $03 + db 16, 0, ABSOLUTE_TILE_ID, $fc + +FacingFishUp: ; fishing up + db 5 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, RELATIVE_ATTRIBUTES, $06 + db 8, 8, RELATIVE_ATTRIBUTES, $07 + db -8, 0, ABSOLUTE_TILE_ID, $fc + +FacingFishLeft: ; fishing left + db 5 ; # + db 0, 0, 0, $08 + db 0, 8, 0, $09 + db 8, 0, RELATIVE_ATTRIBUTES, $0a + db 8, 8, RELATIVE_ATTRIBUTES, $0b + db 5, -8, ABSOLUTE_TILE_ID | X_FLIP, $fd + +FacingFishRight: ; fishing right + db 5 ; # + db 0, 8, X_FLIP, $08 + db 0, 0, X_FLIP, $09 + db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a + db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b + db 5, 16, ABSOLUTE_TILE_ID, $fd + +FacingEmote: ; emote + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $f8 + db 0, 8, ABSOLUTE_TILE_ID, $f9 + db 8, 0, ABSOLUTE_TILE_ID, $fa + db 8, 8, ABSOLUTE_TILE_ID, $fb + +FacingShadow: ; shadow + db 2 ; # + db 0, 0, ABSOLUTE_TILE_ID, $fc + db 0, 8, ABSOLUTE_TILE_ID | X_FLIP, $fc + +FacingBigDollSymmetric: ; big snorlax or lapras doll + db 16 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, 0, $02 + db 8, 8, 0, $03 + db 16, 0, 0, $04 + db 16, 8, 0, $05 + db 24, 0, 0, $06 + db 24, 8, 0, $07 + db 0, 24, X_FLIP, $00 + db 0, 16, X_FLIP, $01 + db 8, 24, X_FLIP, $02 + db 8, 16, X_FLIP, $03 + db 16, 24, X_FLIP, $04 + db 16, 16, X_FLIP, $05 + db 24, 24, X_FLIP, $06 + db 24, 16, X_FLIP, $07 + +FacingWeirdTree1: + db 4 ; # + db 0, 0, 0, $04 + db 0, 8, 0, $05 + db 8, 0, 0, $06 + db 8, 8, 0, $07 + +FacingWeirdTree3: + db 4 ; # + db 0, 8, X_FLIP, $04 + db 0, 0, X_FLIP, $05 + db 8, 8, X_FLIP, $06 + db 8, 0, X_FLIP, $07 + +FacingBigDollAsymmetric: ; big doll other than snorlax or lapras + db 14 ; # + db 0, 0, 0, $00 + db 0, 8, 0, $01 + db 8, 0, 0, $04 + db 8, 8, 0, $05 + db 16, 8, 0, $07 + db 24, 8, 0, $0a + db 0, 24, 0, $03 + db 0, 16, 0, $02 + db 8, 24, X_FLIP, $02 + db 8, 16, 0, $06 + db 16, 24, 0, $09 + db 16, 16, 0, $08 + db 24, 24, X_FLIP, $04 + db 24, 16, 0, $0b + +FacingBoulderDust1: ; boulder dust 1 + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $fe + db 0, 8, ABSOLUTE_TILE_ID, $fe + db 8, 0, ABSOLUTE_TILE_ID, $fe + db 8, 8, ABSOLUTE_TILE_ID, $fe + +FacingBoulderDust2: ; boulder dust 2 + db 4 ; # + db 0, 0, ABSOLUTE_TILE_ID, $ff + db 0, 8, ABSOLUTE_TILE_ID, $ff + db 8, 0, ABSOLUTE_TILE_ID, $ff + db 8, 8, ABSOLUTE_TILE_ID, $ff + +FacingGrass1: + db 2 ; # + db 8, 0, 0, $00 + db 8, 8, 0 | X_FLIP, $00 + +FacingGrass2: + db 2 ; # + db 9, -1, 0, $00 + db 9, 9, 0 | X_FLIP, $00 diff --git a/data/sprites/map_objects.asm b/data/sprites/map_objects.asm new file mode 100644 index 00000000..10afaf57 --- /dev/null +++ b/data/sprites/map_objects.asm @@ -0,0 +1,306 @@ +SpriteMovementData:: +; entries correspond to SPRITEMOVEDATA_* constants + +; SPRITEMOVEDATA_00 + db SPRITEMOVEFN_00 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STILL + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db FIXED_FACING | SLIDING ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WANDER + db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINRANDOM_SLOW + db SPRITEMOVEFN_SLOW_RANDOM_SPIN ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WALK_UP_DOWN + db SPRITEMOVEFN_RANDOM_WALK_Y ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_WALK_LEFT_RIGHT + db SPRITEMOVEFN_RANDOM_WALK_X ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_DOWN + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_UP + db SPRITEMOVEFN_STANDING ; movement function + db UP ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_LEFT + db SPRITEMOVEFN_STANDING ; movement function + db LEFT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STANDING_RIGHT + db SPRITEMOVEFN_STANDING ; movement function + db RIGHT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINRANDOM_FAST + db SPRITEMOVEFN_FAST_RANDOM_SPIN ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_PLAYER + db SPRITEMOVEFN_OBEY_DPAD ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0C + db SPRITEMOVEFN_08 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0D + db SPRITEMOVEFN_09 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0E + db SPRITEMOVEFN_0A ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_0F + db SPRITEMOVEFN_0B ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_10 + db SPRITEMOVEFN_0C ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_11 + db SPRITEMOVEFN_0D ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_12 + db SPRITEMOVEFN_0E ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_FOLLOWING + db SPRITEMOVEFN_FOLLOW ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SCRIPTED + db SPRITEMOVEFN_SCRIPTED ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_BIGDOLLSYM + db SPRITEMOVEFN_BIG_SNORLAX ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL_SYM ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_POKEMON + db SPRITEMOVEFN_BOUNCE ; movement function + db DOWN ; facing + db OBJECT_ACTION_BOUNCE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SUDOWOODO + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db FIXED_FACING | SLIDING ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SMASHABLE_ROCK + db SPRITEMOVEFN_STANDING ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db USE_OBP1 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_STRENGTH_BOULDER + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db 0 ; flags2 + db STRENGTH_BOULDER ; palette flags + +; SPRITEMOVEDATA_FOLLOWNOTEXACT + db SPRITEMOVEFN_FOLLOWNOTEXACT ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db WONT_DELETE ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SHADOW + db SPRITEMOVEFN_SHADOW ; movement function + db DOWN ; facing + db OBJECT_ACTION_00 ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db LOW_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_EMOTE + db SPRITEMOVEFN_EMOTE ; movement function + db DOWN ; facing + db OBJECT_ACTION_EMOTE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db HIGH_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SCREENSHAKE + db SPRITEMOVEFN_SCREENSHAKE ; movement function + db DOWN ; facing + db OBJECT_ACTION_00 ; action + db WONT_DELETE | EMOTE_OBJECT ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINCOUNTERCLOCKWISE + db SPRITEMOVEFN_SPIN_COUNTERCLOCKWISE ; movement function + db LEFT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SPINCLOCKWISE + db SPRITEMOVEFN_SPIN_CLOCKWISE ; movement function + db RIGHT ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_BIGDOLLASYM + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL_ASYM ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_BIGDOLL + db SPRITEMOVEFN_STRENGTH ; movement function + db DOWN ; facing + db OBJECT_ACTION_BIG_DOLL ; action + db WONT_DELETE | FIXED_FACING | SLIDING | MOVE_ANYWHERE ; flags1 + db LOW_PRIORITY ; flags2 + db STRENGTH_BOULDER | BIG_OBJECT ; palette flags + +; SPRITEMOVEDATA_BOULDERDUST + db SPRITEMOVEFN_BOULDERDUST ; movement function + db DOWN ; facing + db OBJECT_ACTION_BOULDER_DUST ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db LOW_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_GRASS + db SPRITEMOVEFN_GRASS ; movement function + db DOWN ; facing + db OBJECT_ACTION_GRASS_SHAKE ; action + db WONT_DELETE | FIXED_FACING | SLIDING | EMOTE_OBJECT ; flags1 + db HIGH_PRIORITY ; flags2 + db 0 ; palette flags + +; SPRITEMOVEDATA_SWIM_WANDER + db SPRITEMOVEFN_RANDOM_WALK_XY ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db SWIMMING ; palette flags + +; 25 + db SPRITEMOVEFN_00 ; movement function + db DOWN ; facing + db OBJECT_ACTION_STAND ; action + db 0 ; flags1 + db 0 ; flags2 + db 0 ; palette flags diff --git a/engine/facings.asm b/engine/facings.asm deleted file mode 100644 index a5669c2b..00000000 --- a/engine/facings.asm +++ /dev/null @@ -1,265 +0,0 @@ -Facings: ; 404a - dw Facing00 - dw Facing01 - dw Facing02 - dw Facing03 - dw Facing04 - dw Facing05 - dw Facing06 - dw Facing07 - dw Facing08 - dw Facing09 - dw Facing10 - dw Facing11 - dw Facing12 - dw Facing13 - dw Facing14 - dw Facing15 - dw Facing16 - dw Facing17 - dw Facing18 - dw Facing19 - dw Facing20 - dw Facing21 - dw Facing22 - dw Facing23 - dw Facing24 - dw Facing25 - dw Facing26 - dw Facing27 - dw Facing28 - dw Facing29 - dw Facing30 - dw Facing31 -FacingsEnd: dw 0 - -NUM_FACINGS EQU (FacingsEnd - Facings) / 2 - - -; Tables used as a reference to transform OAM data. - -; Format: -; db y, x, attributes, tile index - -; Attributes: -BEHIND_BG EQU 1 << OAM_PRIORITY - -Facing00: -Facing02: -Facing24: -Facing26: ; standing down - db 4 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 2, $02 - db 8, 8, 2, $03 -; 409d - -Facing01: ; walking down 1 - db 4 ; # - db 0, 0, 0, $80 - db 0, 8, 0, $81 - db 8, 0, 2, $82 - db 8, 8, 2, $83 -; 40ae - -Facing03: ; walking down 2 - db 4 ; # - db 0, 8, X_FLIP, $80 - db 0, 0, X_FLIP, $81 - db 8, 8, 2 | X_FLIP, $82 - db 8, 0, 2 | X_FLIP, $83 -; 40bf - -Facing04: -Facing06: ; standing up - db 4 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 2, $06 - db 8, 8, 2, $07 -; 40d0 - -Facing05: ; walking up 1 - db 4 ; # - db 0, 0, 0, $84 - db 0, 8, 0, $85 - db 8, 0, 2, $86 - db 8, 8, 2, $87 -; 40e1 - -Facing07: ; walking up 2 - db 4 ; # - db 0, 8, X_FLIP, $84 - db 0, 0, X_FLIP, $85 - db 8, 8, 2 | X_FLIP, $86 - db 8, 0, 2 | X_FLIP, $87 -; 40f2 - -Facing08: -Facing10: ; standing left - db 4 ; # - db 0, 0, 0, $08 - db 0, 8, 0, $09 - db 8, 0, 2, $0a - db 8, 8, 2, $0b -; 4103 - -Facing12: -Facing14: ; standing right - db 4 ; # - db 0, 8, X_FLIP, $08 - db 0, 0, X_FLIP, $09 - db 8, 8, 2 | X_FLIP, $0a - db 8, 0, 2 | X_FLIP, $0b -; 4114 - -Facing09: -Facing11: ; walking left - db 4 ; # - db 0, 0, 0, $88 - db 0, 8, 0, $89 - db 8, 0, 2, $8a - db 8, 8, 2, $8b -; 4125 - -Facing13: -Facing15: ; walking right - db 4 ; # - db 0, 8, X_FLIP, $88 - db 0, 0, X_FLIP, $89 - db 8, 8, 2 | X_FLIP, $8a - db 8, 0, 2 | X_FLIP, $8b -; 4136 - -Facing16: ; fishing down - db 5 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 2, $02 - db 8, 8, 2, $03 - db 16, 0, 4, $fc -; 414b - -Facing17: ; fishing up - db 5 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 2, $06 - db 8, 8, 2, $07 - db -8, 0, 4, $fc -; 4160 - -Facing18: ; fishing left - db 5 ; # - db 0, 0, 0, $08 - db 0, 8, 0, $09 - db 8, 0, 2, $0a - db 8, 8, 2, $0b - db 5, -8, 4 | X_FLIP, $fd -; 4175 - -Facing19: ; fishing right - db 5 ; # - db 0, 8, X_FLIP, $08 - db 0, 0, X_FLIP, $09 - db 8, 8, 2 | X_FLIP, $0a - db 8, 0, 2 | X_FLIP, $0b - db 5, 16, 4, $fd -; 418a - -Facing20: ; emote - db 4 ; # - db 0, 0, 4, $f8 - db 0, 8, 4, $f9 - db 8, 0, 4, $fa - db 8, 8, 4, $fb -; 419b - -Facing21: ; shadow - db 2 ; # - db 0, 0, 4, $fc - db 0, 8, 4 | X_FLIP, $fc -; 41a4 - -Facing23: ; big snorlax or lapras doll - db 16 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 0, $02 - db 8, 8, 0, $03 - db 16, 0, 0, $04 - db 16, 8, 0, $05 - db 24, 0, 0, $06 - db 24, 8, 0, $07 - db 0, 24, X_FLIP, $00 - db 0, 16, X_FLIP, $01 - db 8, 24, X_FLIP, $02 - db 8, 16, X_FLIP, $03 - db 16, 24, X_FLIP, $04 - db 16, 16, X_FLIP, $05 - db 24, 24, X_FLIP, $06 - db 24, 16, X_FLIP, $07 -; 41e5 - -Facing25: ; 41e4 - db 4 ; # - db 0, 0, 0, $04 - db 0, 8, 0, $05 - db 8, 0, 0, $06 - db 8, 8, 0, $07 -; 41f6 - -Facing27: ; 41f5 - db 4 ; # - db 0, 8, X_FLIP, $04 - db 0, 0, X_FLIP, $05 - db 8, 8, X_FLIP, $06 - db 8, 0, X_FLIP, $07 -; 4207 - -Facing22: ; big doll other than snorlax or lapras - db 14 ; # - db 0, 0, 0, $00 - db 0, 8, 0, $01 - db 8, 0, 0, $04 - db 8, 8, 0, $05 - db 16, 8, 0, $07 - db 24, 8, 0, $0a - db 0, 24, 0, $03 - db 0, 16, 0, $02 - db 8, 24, X_FLIP, $02 - db 8, 16, 0, $06 - db 16, 24, 0, $09 - db 16, 16, 0, $08 - db 24, 24, X_FLIP, $04 - db 24, 16, 0, $0b -; 4240 - -Facing28: ; boulder dust 1 - db 4 ; # - db 0, 0, 4, $fe - db 0, 8, 4, $fe - db 8, 0, 4, $fe - db 8, 8, 4, $fe -; 4251 - -Facing29: ; boulder dust 2 - db 4 ; # - db 0, 0, 4, $ff - db 0, 8, 4, $ff - db 8, 0, 4, $ff - db 8, 8, 4, $ff -; 4262 - -Facing30: ; 4261 - db 2 ; # - db 8, 0, 0, $00 - db 8, 8, 0 | X_FLIP, $00 -; 426b - -Facing31: ; 426a - db 2 ; # - db 9, -1, 0, $00 - db 9, 9, 0 | X_FLIP, $00 -; 4274 diff --git a/engine/gfx/load_push_oam.asm b/engine/gfx/load_push_oam.asm new file mode 100644 index 00000000..641439ec --- /dev/null +++ b/engine/gfx/load_push_oam.asm @@ -0,0 +1,24 @@ +DummyPredef1: + ret + +WriteOAMDMACodeToHRAM:: + ld c, LOW(hTransferVirtualOAM) + ld b, .PushOAMEnd - .PushOAM + ld hl, .PushOAM +.loop + ld a, [hli] + ldh [c], a + inc c + dec b + jr nz, .loop + ret + +.PushOAM: + ld a, HIGH(wVirtualOAM) + ldh [rDMA], a + ld a, NUM_SPRITE_OAM_STRUCTS +.pushoam_loop + dec a + jr nz, .pushoam_loop + ret +.PushOAMEnd diff --git a/engine/math.asm b/engine/math/math.asm index cdac2d37..cdac2d37 100755 --- a/engine/math.asm +++ b/engine/math/math.asm diff --git a/engine/main_menu.asm b/engine/menus/intro_menu.asm index 6f460a5c..2ad9a396 100755..100644 --- a/engine/main_menu.asm +++ b/engine/menus/intro_menu.asm @@ -1091,3 +1091,454 @@ Intro_PlacePlayerSprite: ; 6210 (1:6210) db 9 * 8 + 4, 10 * 8, 1 db 10 * 8 + 4, 9 * 8, 2 db 10 * 8 + 4, 10 * 8, 3 + +IntroSequence: ; 6241 (1:6241) + callfar Copyright_GFPresents + jr c, StartTitleScreen + callfar GoldSilverIntro +StartTitleScreen: + call InitTitleScreen + call DelayFrame +.asm_6255 + call TitleScreenFrame + jr nc, .asm_6255 + call ClearSprites + call ClearBGPalettes + ld hl, rLCDC + res 2, [hl] + call ClearTilemap + xor a + ldh [hLCDCPointer], a + ld b, $8 + call GetSGBLayout + call UpdateTimePals + ld a, [wce64] + cp $5 + jr c, .asm_627b + xor a +.asm_627b + ld e, a + ld d, $0 + ld hl, .Jumptable + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable + dw MainMenu_ + dw DeleteSaveData + dw IntroSequence + dw IntroSequence + dw ResetClock + +InitTitleScreen: ; 6291 (1:6291) + call ClearBGPalettes + xor a + ld [wTimeOfDayPal], a + ld de, MUSIC_NONE + call PlayMusic + call ClearTilemap + call DisableLCD + call ClearSprites + xor a + ldh [hBGMapMode], a + ldh [hMapAnims], a + ldh [hSCY], a + ldh [hSCX], a + ld hl, $8000 + ld bc, $2000 + xor a + call ByteFill + farcall ClearAnimatedObjectBuffer + + ld hl, TitleScreenGFX1 + ld de, $9000 + ld a, BANK(TitleScreenGFX1) + call FarDecompress + + ld hl, TitleScreenGFX2 + ld de, $8800 + ld a, BANK(TitleScreenGFX2) + call FarDecompress + + ld hl, TitleScreenGFX4 + ld de, $8000 + ld a, BANK(TitleScreenGFX4) + call FarDecompress + + ld hl, TitleScreenGFX3 + ld de, $8f80 + ld bc, $80 + ld a, BANK(TitleScreenGFX3) + call FarCopyBytes + + call Function636e + call Function63b6 + ld hl, wAnimatedObjectDynamicVTileOffsets + xor a + ld [hli], a + ld [hl], a + ld hl, rLCDC + set 2, [hl] + call EnableLCD + xor a + ld hl, wce63 + ld [hli], a + ld [hli], a + ld [hli], a + ld [hl], a + ld de, $6058 + ld a, $2c ; HO-OH + call InitSpriteAnimStruct + ld hl, wAnimatedObjectStruct1 + ld de, wAnimatedObjectStruct10 + ld bc, $a + call CopyBytes + ld hl, wAnimatedObjectStruct1 + ld [hl], $0 + ld hl, wc700 + ld bc, $90 + xor a + call ByteFill + ld a, $43 + ldh [hLCDCPointer], a + ld b, $c + call GetSGBLayout + call Function6341 + ld de, MUSIC_TITLE + call PlayMusic + ret + +Function6341: ; 6341 (1:6341) + ldh a, [hCGB] + and a + jr nz, .asm_6365 + ldh a, [hSGB] + and a + jr nz, .asm_6358 + ld a, $d8 + ldh [rBGP], a +IF DEF(GOLD) + ld a, $ff + ldh [rOBP0], a + ld a, $f8 +ENDC +IF DEF(SILVER) + ld a, $f0 + ldh [rOBP0], a + ld a, $f0 +ENDC + ldh [rOBP1], a + ret + +.asm_6358 + ld a, $e4 + ldh [rBGP], a +IF DEF(GOLD) + ld a, $ff + ldh [rOBP0], a + ld a, $e4 +ENDC +IF DEF(SILVER) + ld a, $f0 + ldh [rOBP0], a + ld a, $e0 +ENDC + ldh [rOBP1], a + ret + +.asm_6365 + ld a, $e4 + call DmgToCgbBGPals +IF DEF(SILVER) + ld a, $e0 +ENDC + call DmgToCgbObjPal0 + ret + +Function636e: ; 636e (1:636e) + ldh a, [hCGB] + and a + ret z + ld a, $1 + ldh [rVBK], a + ld hl, $9800 + ld bc, $240 + xor a + call ByteFill + ld hl, $9800 + ld bc, $714 + ld a, $1 + call Function63a6 + ld hl, $98c5 + ld bc, $10a + ld a, $3 + call Function63a6 + ld hl, $9980 + ld bc, $a0 + ld a, $4 + call ByteFill + ld a, $0 + ldh [rVBK], a + ret + +Function63a6: ; 63a6 (1:63a6) + push bc + push hl +.asm_63a8 + ld [hli], a + dec c + jr nz, .asm_63a8 + pop hl + ld bc, $20 + add hl, bc + pop bc + dec b + jr nz, Function63a6 + ret + +Function63b6: ; 63b6 (1:63b6) + ld hl, GSIntroTilemap ; $4616 + ld de, $9800 +.asm_63bc + ld a, BANK(GSIntroTilemap) ; $26 + call GetFarByte + cp $ff + jr z, .asm_63ca + inc hl + ld [de], a + inc de + jr .asm_63bc + +.asm_63ca + ldh a, [hCGB] + and a + ret nz + ld hl, $9960 + ld bc, $20 + ld a, $50 + call ByteFill + ret + +TitleScreenFrame: ; 63da (1:63da) + call Function63fe + ld a, [wce63] + bit 7, a + jr nz, .asm_63fc + call Function640f + ld a, $1 + ldh [hOAMUpdate], a + farcall AnimatedObjects_PlayFrame + xor a + ldh [hOAMUpdate], a + call Function64b1 + call DelayFrame + and a + ret + +.asm_63fc + scf + ret + +Function63fe: ; 63fe (1:63fe) +IF DEF(GOLD) + ldh a, [hVBlankCounter] + and $7 + ret nz +ENDC + ld hl, wc75f + ld a, [hl] + dec a + ld bc, $28 + call ByteFill + ret + +Function640f: ; 640f (1:640f) + ld e, a + ld d, $0 + ld hl, .Jumptable ; $641b + add hl, de + add hl, de + ld a, [hli] + ld h, [hl] + ld l, a + jp hl + +.Jumptable + dw Function6426 + dw Function6434 + dw Function648b + +Function6421: + ld hl, wce63 + inc [hl] + ret + +Function6426: + ld hl, wce63 + inc [hl] + ld hl, wce65 +IF DEF(GOLD) + ld de, $13c0 +ENDC +IF DEF(SILVER) + ld de, $1140 +ENDC + ld [hl], e + inc hl + ld [hl], d + ret + +Function6434: + ld hl, wce65 + ld e, [hl] + inc hl + ld d, [hl] + ld a, e + or d + jr z, .asm_646b + dec de + ld [hl], d + dec hl + ld [hl], e + call GetJoypad + ld hl, hJoyDown + ld a, [hl] + and D_UP + B_BUTTON + SELECT + cp D_UP + B_BUTTON + SELECT + jr z, .asm_6460 + ld a, [hl] + and D_DOWN + B_BUTTON + SELECT + cp D_DOWN + B_BUTTON + SELECT + jr z, .asm_6480 + ld a, [hl] + and START | A_BUTTON + jr nz, .asm_645c + ret + +.asm_645c + ld a, $0 + jr .asm_6462 + +.asm_6460 + ld a, $1 +.asm_6462 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +.asm_646b + ld hl, wce63 + inc [hl] + xor a + ld [wMusicFadeID], a + ld [wMusicFadeID + 1], a + ld hl, wMusicFade + ld [hl], $8 + ld hl, wce65 + inc [hl] + ret + +.asm_6480 + ld a, $4 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +Function648b: + ld hl, wce65 + inc [hl] + ld a, [wMusicFade] + and a + ret nz + ld a, $2 + ld [wce64], a + ld hl, wce63 + set 7, [hl] + ret + +DeleteSaveData: + farcall DeleteSaveData_ + jp Init + +ResetClock: + farcall ResetClock_ + jp Init + +Function64b1: ; 64b1 (1:64b1) + ld a, [wce65] + and $3 + ret nz +IF DEF(GOLD) + ld bc, wAnimatedObjectStruct10Index + ld hl, $a + add hl, bc + ld l, [hl] + ld h, $0 + add hl, hl + add hl, hl + ld de, .Data_64e0 + add hl, de + ld a, [wce65] + and $4 + srl a + srl a + ld e, a + ld d, $0 + add hl, de + add hl, de + ld a, [hli] + and a + ret z + ld e, a + ld d, [hl] +ENDC + +IF DEF(SILVER) + ld de, $7c58 +ENDC + ld a, $f + call InitSpriteAnimStruct + ret + +IF DEF(GOLD) +.Data_64e0: + db $5c, $50, $00, $00 + db $5c, $68, $5c, $58 + db $5c, $68, $5c, $78 + db $5c, $88, $5c, $78 + db $00, $00, $5c, $78 + db $00, $00, $5c, $58 +ENDC + +Copyright: + call ClearTilemap + call LoadFontsExtra + ld de, CopyrightGFX + ld hl, vTiles2 tile $60 + lb bc, BANK(CopyrightGFX), 30 + call Request2bpp + hlcoord 2, 7 + ld de, CopyrightString + jp PlaceString + +CopyrightString: + db $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $65, $66, $67, $68, $69, $6a + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $6b, $6c, $6d, $6e, $6f, $70, $71, $72 + next $60, $61, $62, $63, $7a, $7b, $7c, $7d + db $73, $74, $75, $76, $77, $78, $79, $71, $72 + db "@" + +GameInit:: ; 6545 (1:6545) + call ClearWindowData + ld a, $5 + ld hl, $4f60 + rst FarCall + jp IntroSequence diff --git a/engine/overworld/init_map.asm b/engine/overworld/init_map.asm new file mode 100644 index 00000000..07cd07de --- /dev/null +++ b/engine/overworld/init_map.asm @@ -0,0 +1,91 @@ +ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551) + call DelayFrame + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + call Function656b + pop af + ldh [hBGMapMode], a + pop af + ldh [hOAMUpdate], a + ret + +Function656b: ; 656b (1:656b) + xor a + ldh [hLCDCPointer], a + ldh [hBGMapMode], a + ld hl, wd565 + set 7, [hl] + res 2, [hl] + ld a, $90 + ldh [hWY], a + call OverworldTextModeSwitch + ld a, $9c + call .LoadBGMapAddrIntoHRAM + call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap + xor a + ldh [hBGMapMode], a + ldh [hWY], a + ld a, $98 + call .LoadBGMapAddrIntoHRAM + call .WaitTransfer + xor a + ld [wd05b], a + ld a, $98 + ld [wd05c], a + xor a + ldh [hSCX], a + ldh [hSCY], a + call ApplyBGMapAnchorToObjects + ret + +.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5) + ldh [hBGMapAddress + 1], a + xor a + ldh [hBGMapAddress], a + ret + +.WaitTransfer: ; 65ab (1:65ab) + ldh a, [hBGMapMode] + push af + xor a + ldh [hBGMapMode], a + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + ld a, $3 + ldh [hVBlankCounter + 1], a +.asm_65bc + call DelayFrame + ldh a, [hVBlankCounter + 1] + and a + jr nz, .asm_65bc + pop af + ldh [hOAMUpdate], a + pop af + ldh [hBGMapMode], a + ret + +LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb) + ldh a, [hOAMUpdate] + push af + ld a, $1 + ldh [hOAMUpdate], a + call .LoadGFX + pop af + ldh [hOAMUpdate], a + ret + +.LoadGFX: ; 65d9 (1:65d9) + call LoadFontsExtra + ld a, $90 + ldh [hWY], a + call SafeUpdateSprites + call Functiond9e + ret
\ No newline at end of file diff --git a/engine/overworld/map_objects.asm b/engine/overworld/map_objects.asm index 774d4cd8..392cb86e 100755 --- a/engine/overworld/map_objects.asm +++ b/engine/overworld/map_objects.asm @@ -1,5 +1,6 @@ -INCLUDE "engine/facings.asm" -SpriteMovementData:: INCLUDE "data/map_objects.asm" +INCLUDE "data/sprites/facings.asm" + +INCLUDE "data/sprites/map_objects.asm" DeleteMapObject:: ; 4358 (1:4358) push bc @@ -1370,7 +1371,7 @@ Function597a: ; 597a (1:597a) ld l, a ld h, $0 add hl, hl - ld bc, PushOAMEnd + ld bc, Facings add hl, bc ld a, [hli] ld h, [hl] diff --git a/engine/pokemon/correct_nick_errors.asm b/engine/pokemon/correct_nick_errors.asm new file mode 100644 index 00000000..c7b6ff39 --- /dev/null +++ b/engine/pokemon/correct_nick_errors.asm @@ -0,0 +1,53 @@ +CorrectNickErrors:: ; 677e (1:677e) + push bc + push de + ld b, MON_NAME_LENGTH +.checkchar + ld a, [de] + cp "@" + jr z, .done + ld hl, .textcommands + dec hl +.loop + inc hl + ld a, [hl] + cp $ff + jr z, .next + ld a, [de] + cp [hl] + inc hl + jr c, .loop + cp [hl] + jr nc, .loop + ld a, "?" + ld [de], a + jr .loop + +.next + inc de + dec b + jr nz, .checkchar + pop de + push de + ld a, "?" + ld [de], a + inc de + ld a, "@" + ld [de], a +.done + pop de + pop bc + ret + +.textcommands +; table defining which characters are actually text commands +; format: + ; ≥ < + db "<START>", $04 + 1 + db "<PLAY_G>", $18 + 1 + db $1d, "%" + 1 + db $35, "<GREEN>" + 1 + db "<ENEMY>", "<ENEMY>" + 1 + db $49, "<TM>" + 1 + db "<ROCKET>", "┘" + 1 + db -1 ; end
\ No newline at end of file diff --git a/engine/learn.asm b/engine/pokemon/learn.asm index b28f754b..b28f754b 100644 --- a/engine/learn.asm +++ b/engine/pokemon/learn.asm diff --git a/engine/title.asm b/engine/title.asm deleted file mode 100755 index 94863c56..00000000 --- a/engine/title.asm +++ /dev/null @@ -1,450 +0,0 @@ -IntroSequence: ; 6241 (1:6241) - callfar Copyright_GFPresents - jr c, StartTitleScreen - callfar GoldSilverIntro -StartTitleScreen: - call InitTitleScreen - call DelayFrame -.asm_6255 - call TitleScreenFrame - jr nc, .asm_6255 - call ClearSprites - call ClearBGPalettes - ld hl, rLCDC - res 2, [hl] - call ClearTilemap - xor a - ldh [hLCDCPointer], a - ld b, $8 - call GetSGBLayout - call UpdateTimePals - ld a, [wce64] - cp $5 - jr c, .asm_627b - xor a -.asm_627b - ld e, a - ld d, $0 - ld hl, .Jumptable - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -.Jumptable - dw MainMenu_ - dw DeleteSaveData - dw IntroSequence - dw IntroSequence - dw ResetClock - -InitTitleScreen: ; 6291 (1:6291) - call ClearBGPalettes - xor a - ld [wTimeOfDayPal], a - ld de, MUSIC_NONE - call PlayMusic - call ClearTilemap - call DisableLCD - call ClearSprites - xor a - ldh [hBGMapMode], a - ldh [hMapAnims], a - ldh [hSCY], a - ldh [hSCX], a - ld hl, $8000 - ld bc, $2000 - xor a - call ByteFill - farcall ClearAnimatedObjectBuffer - - ld hl, TitleScreenGFX1 - ld de, $9000 - ld a, BANK(TitleScreenGFX1) - call FarDecompress - - ld hl, TitleScreenGFX2 - ld de, $8800 - ld a, BANK(TitleScreenGFX2) - call FarDecompress - - ld hl, TitleScreenGFX4 - ld de, $8000 - ld a, BANK(TitleScreenGFX4) - call FarDecompress - - ld hl, TitleScreenGFX3 - ld de, $8f80 - ld bc, $80 - ld a, BANK(TitleScreenGFX3) - call FarCopyBytes - - call Function636e - call Function63b6 - ld hl, wAnimatedObjectDynamicVTileOffsets - xor a - ld [hli], a - ld [hl], a - ld hl, rLCDC - set 2, [hl] - call EnableLCD - xor a - ld hl, wce63 - ld [hli], a - ld [hli], a - ld [hli], a - ld [hl], a - ld de, $6058 - ld a, $2c ; HO-OH - call InitSpriteAnimStruct - ld hl, wAnimatedObjectStruct1 - ld de, wAnimatedObjectStruct10 - ld bc, $a - call CopyBytes - ld hl, wAnimatedObjectStruct1 - ld [hl], $0 - ld hl, wc700 - ld bc, $90 - xor a - call ByteFill - ld a, $43 - ldh [hLCDCPointer], a - ld b, $c - call GetSGBLayout - call Function6341 - ld de, MUSIC_TITLE - call PlayMusic - ret - -Function6341: ; 6341 (1:6341) - ldh a, [hCGB] - and a - jr nz, .asm_6365 - ldh a, [hSGB] - and a - jr nz, .asm_6358 - ld a, $d8 - ldh [rBGP], a -IF DEF(GOLD) - ld a, $ff - ldh [rOBP0], a - ld a, $f8 -ENDC -IF DEF(SILVER) - ld a, $f0 - ldh [rOBP0], a - ld a, $f0 -ENDC - ldh [rOBP1], a - ret - -.asm_6358 - ld a, $e4 - ldh [rBGP], a -IF DEF(GOLD) - ld a, $ff - ldh [rOBP0], a - ld a, $e4 -ENDC -IF DEF(SILVER) - ld a, $f0 - ldh [rOBP0], a - ld a, $e0 -ENDC - ldh [rOBP1], a - ret - -.asm_6365 - ld a, $e4 - call DmgToCgbBGPals -IF DEF(SILVER) - ld a, $e0 -ENDC - call DmgToCgbObjPal0 - ret - -Function636e: ; 636e (1:636e) - ldh a, [hCGB] - and a - ret z - ld a, $1 - ldh [rVBK], a - ld hl, $9800 - ld bc, $240 - xor a - call ByteFill - ld hl, $9800 - ld bc, $714 - ld a, $1 - call Function63a6 - ld hl, $98c5 - ld bc, $10a - ld a, $3 - call Function63a6 - ld hl, $9980 - ld bc, $a0 - ld a, $4 - call ByteFill - ld a, $0 - ldh [rVBK], a - ret - -Function63a6: ; 63a6 (1:63a6) - push bc - push hl -.asm_63a8 - ld [hli], a - dec c - jr nz, .asm_63a8 - pop hl - ld bc, $20 - add hl, bc - pop bc - dec b - jr nz, Function63a6 - ret - -Function63b6: ; 63b6 (1:63b6) - ld hl, GSIntroTilemap ; $4616 - ld de, $9800 -.asm_63bc - ld a, BANK(GSIntroTilemap) ; $26 - call GetFarByte - cp $ff - jr z, .asm_63ca - inc hl - ld [de], a - inc de - jr .asm_63bc - -.asm_63ca - ldh a, [hCGB] - and a - ret nz - ld hl, $9960 - ld bc, $20 - ld a, $50 - call ByteFill - ret - -TitleScreenFrame: ; 63da (1:63da) - call Function63fe - ld a, [wce63] - bit 7, a - jr nz, .asm_63fc - call Function640f - ld a, $1 - ldh [hOAMUpdate], a - farcall AnimatedObjects_PlayFrame - xor a - ldh [hOAMUpdate], a - call Function64b1 - call DelayFrame - and a - ret - -.asm_63fc - scf - ret - -Function63fe: ; 63fe (1:63fe) -IF DEF(GOLD) - ldh a, [hVBlankCounter] - and $7 - ret nz -ENDC - ld hl, wc75f - ld a, [hl] - dec a - ld bc, $28 - call ByteFill - ret - -Function640f: ; 640f (1:640f) - ld e, a - ld d, $0 - ld hl, .Jumptable ; $641b - add hl, de - add hl, de - ld a, [hli] - ld h, [hl] - ld l, a - jp hl - -.Jumptable - dw Function6426 - dw Function6434 - dw Function648b - -Function6421: - ld hl, wce63 - inc [hl] - ret - -Function6426: - ld hl, wce63 - inc [hl] - ld hl, wce65 -IF DEF(GOLD) - ld de, $13c0 -ENDC -IF DEF(SILVER) - ld de, $1140 -ENDC - ld [hl], e - inc hl - ld [hl], d - ret - -Function6434: - ld hl, wce65 - ld e, [hl] - inc hl - ld d, [hl] - ld a, e - or d - jr z, .asm_646b - dec de - ld [hl], d - dec hl - ld [hl], e - call GetJoypad - ld hl, hJoyDown - ld a, [hl] - and D_UP + B_BUTTON + SELECT - cp D_UP + B_BUTTON + SELECT - jr z, .asm_6460 - ld a, [hl] - and D_DOWN + B_BUTTON + SELECT - cp D_DOWN + B_BUTTON + SELECT - jr z, .asm_6480 - ld a, [hl] - and START | A_BUTTON - jr nz, .asm_645c - ret - -.asm_645c - ld a, $0 - jr .asm_6462 - -.asm_6460 - ld a, $1 -.asm_6462 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -.asm_646b - ld hl, wce63 - inc [hl] - xor a - ld [wMusicFadeID], a - ld [wMusicFadeID + 1], a - ld hl, wMusicFade - ld [hl], $8 - ld hl, wce65 - inc [hl] - ret - -.asm_6480 - ld a, $4 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -Function648b: - ld hl, wce65 - inc [hl] - ld a, [wMusicFade] - and a - ret nz - ld a, $2 - ld [wce64], a - ld hl, wce63 - set 7, [hl] - ret - -DeleteSaveData: - farcall DeleteSaveData_ - jp Init - -ResetClock: - farcall ResetClock_ - jp Init - -Function64b1: ; 64b1 (1:64b1) - ld a, [wce65] - and $3 - ret nz -IF DEF(GOLD) - ld bc, wAnimatedObjectStruct10Index - ld hl, $a - add hl, bc - ld l, [hl] - ld h, $0 - add hl, hl - add hl, hl - ld de, .Data_64e0 - add hl, de - ld a, [wce65] - and $4 - srl a - srl a - ld e, a - ld d, $0 - add hl, de - add hl, de - ld a, [hli] - and a - ret z - ld e, a - ld d, [hl] -ENDC - -IF DEF(SILVER) - ld de, $7c58 -ENDC - ld a, $f - call InitSpriteAnimStruct - ret - -IF DEF(GOLD) -.Data_64e0: - db $5c, $50, $00, $00 - db $5c, $68, $5c, $58 - db $5c, $68, $5c, $78 - db $5c, $88, $5c, $78 - db $00, $00, $5c, $78 - db $00, $00, $5c, $58 -ENDC - -Copyright: - call ClearTilemap - call LoadFontsExtra - ld de, CopyrightGFX - ld hl, vTiles2 tile $60 - lb bc, BANK(CopyrightGFX), 30 - call Request2bpp - hlcoord 2, 7 - ld de, CopyrightString - jp PlaceString - -CopyrightString: - db $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $65, $66, $67, $68, $69, $6a - next $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $6b, $6c, $6d, $6e, $6f, $70, $71, $72 - next $60, $61, $62, $63, $7a, $7b, $7c, $7d - db $73, $74, $75, $76, $77, $78, $79, $71, $72 - db "@" - -GameInit:: ; 6545 (1:6545) - call ClearWindowData - ld a, $5 - ld hl, $4f60 - rst FarCall - jp IntroSequence @@ -4,188 +4,14 @@ INCLUDE "constants.asm" SECTION "bank1", ROMX INCLUDE "engine/link/place_waiting_text.asm" - -DummyPredef1: - ret - -WriteOAMDMACodeToHRAM:: ; 4032 (1:4032) - ld c, hTransferVirtualOAM - $ff00 - ld b, PushOAMEnd - PushOAM - ld hl, PushOAM -.asm_4039 - ld a, [hli] - ld [$ff00+c], a - inc c - dec b - jr nz, .asm_4039 - ret - -PushOAM: - ld a, wVirtualOAM / $100 - ldh [rDMA], a - ld a, $28 -.asm_4046 - dec a - jr nz, .asm_4046 - ret - -PushOAMEnd - +INCLUDE "engine/gfx/load_push_oam.asm" INCLUDE "engine/overworld/map_objects.asm" -INCLUDE "engine/main_menu.asm" -INCLUDE "engine/title.asm" - -ReanchorBGMap_NoOAMUpdate:: ; 6551 (1:6551) - call DelayFrame - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - call Function656b - pop af - ldh [hBGMapMode], a - pop af - ldh [hOAMUpdate], a - ret - -Function656b: ; 656b (1:656b) - xor a - ldh [hLCDCPointer], a - ldh [hBGMapMode], a - ld hl, wd565 - set 7, [hl] - res 2, [hl] - ld a, $90 - ldh [hWY], a - call OverworldTextModeSwitch - ld a, $9c - call .LoadBGMapAddrIntoHRAM - call _OpenAndCloseMenu_HDMATransferTilemapAndAttrmap - xor a - ldh [hBGMapMode], a - ldh [hWY], a - ld a, $98 - call .LoadBGMapAddrIntoHRAM - call .WaitTransfer - xor a - ld [wd05b], a - ld a, $98 - ld [wd05c], a - xor a - ldh [hSCX], a - ldh [hSCY], a - call ApplyBGMapAnchorToObjects - ret - -.LoadBGMapAddrIntoHRAM: ; 65a5 (1:65a5) - ldh [hBGMapAddress + 1], a - xor a - ldh [hBGMapAddress], a - ret - -.WaitTransfer: ; 65ab (1:65ab) - ldh a, [hBGMapMode] - push af - xor a - ldh [hBGMapMode], a - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - ld a, $3 - ldh [hVBlankCounter + 1], a -.asm_65bc - call DelayFrame - ldh a, [hVBlankCounter + 1] - and a - jr nz, .asm_65bc - pop af - ldh [hOAMUpdate], a - pop af - ldh [hBGMapMode], a - ret - -LoadFonts_NoOAMUpdate:: ; 65cb (1:65cb) - ldh a, [hOAMUpdate] - push af - ld a, $1 - ldh [hOAMUpdate], a - call .LoadGFX - pop af - ldh [hOAMUpdate], a - ret - -.LoadGFX: ; 65d9 (1:65d9) - call LoadFontsExtra - ld a, $90 - ldh [hWY], a - call SafeUpdateSprites - call Functiond9e - ret - -INCLUDE "engine/learn.asm" - -CorrectNickErrors:: ; 677e (1:677e) - push bc - push de - ld b, MON_NAME_LENGTH -.checkchar - ld a, [de] - cp "@" - jr z, .done - ld hl, .textcommands - dec hl -.loop - inc hl - ld a, [hl] - cp $ff - jr z, .next - ld a, [de] - cp [hl] - inc hl - jr c, .loop - cp [hl] - jr nc, .loop - ld a, "?" - ld [de], a - jr .loop - -.next - inc de - dec b - jr nz, .checkchar - pop de - push de - ld a, "?" - ld [de], a - inc de - ld a, "@" - ld [de], a -.done - pop de - pop bc - ret - -.textcommands -; table defining which characters are actually text commands -; format: - ; ≥ < - db "<START>", $04 + 1 - db "<PLAY_G>", $18 + 1 - db $1d, "%" + 1 - db $35, "<GREEN>" + 1 - db "<ENEMY>", "<ENEMY>" + 1 - db $49, "<TM>" + 1 - db "<ROCKET>", "┘" + 1 - db -1 ; end - -INCLUDE "engine/math.asm" -ItemAttributes: -INCLUDE "items/item_attributes.asm" +INCLUDE "engine/menus/intro_menu.asm" +INCLUDE "engine/overworld/init_map.asm" +INCLUDE "engine/pokemon/learn.asm" +INCLUDE "engine/pokemon/correct_nick_errors.asm" +INCLUDE "engine/math/math.asm" +INCLUDE "data/items/attributes.asm" INCLUDE "engine/overworld/npc_movement.asm" INCLUDE "engine/events/happiness_egg.asm" INCLUDE "engine/events/shuckle.asm" |