diff options
author | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2020-12-12 14:37:11 +0700 |
---|---|---|
committer | Zumi Daxuya <daxuya.zumi+code@protonmail.com> | 2020-12-12 14:37:11 +0700 |
commit | 1a131d1ce01bfd12cdb3cf61719e41bff7b699db (patch) | |
tree | 3a72c11ad809a1e6fc69c07bded9f46342469598 | |
parent | 4f0e8ce39c6c8f0b7bb087a7911077e9fac0008a (diff) |
Some adjustments
-rwxr-xr-x | constants/sprite_anim_constants.asm | 2 | ||||
-rw-r--r-- | engine/games/pikachu_minigame.asm | 88 | ||||
-rw-r--r-- | ram/wram.asm | 16 |
3 files changed, 70 insertions, 36 deletions
diff --git a/constants/sprite_anim_constants.asm b/constants/sprite_anim_constants.asm index 1b20a60..928b601 100755 --- a/constants/sprite_anim_constants.asm +++ b/constants/sprite_anim_constants.asm @@ -52,6 +52,8 @@ SPRITE_ANIM_INDEX_GS_TITLE_FLAME_NOTE EQU $2e SPRITE_ANIM_INDEX_MINIGAME_PIKACHU EQU $2f SPRITE_ANIM_INDEX_MINIGAME_PIKACHU_TAIL EQU $30 +SPRITE_ANIM_INDEX_MINIGAME_NOTE EQU $31 +SPRITE_ANIM_INDEX_MINIGAME_JIGGLYPUFF EQU $32 SPRITE_ANIM_INDEX_39 EQU $39 SPRITE_ANIM_INDEX_GAMEFREAK_LOGO EQU $3a diff --git a/engine/games/pikachu_minigame.asm b/engine/games/pikachu_minigame.asm index c87c5fe..6f6283f 100644 --- a/engine/games/pikachu_minigame.asm +++ b/engine/games/pikachu_minigame.asm @@ -1,5 +1,21 @@ INCLUDE "constants.asm" +; MinigamePikachuDoMovement.Jumptable constants + const_def + const MINIGAME_PIKACHU_INIT ; 00 + const MINIGAME_PIKACHU_CONTROL ; 01 + const MINIGAME_PIKACHU_JUMPING ; 02 + const MINIGAME_PIKACHU_FALLING ; 03 + +; PikachuMiniGame_PerformGameFunction.Jumptable constants + const_def + const PIKACHU_MINIGAME_SETUP ; 00 + const PIKACHU_MINIGAME_NOTE_SPAWNER ; 01 + const PIKACHU_MINIGAME_SET_NEXT_SCENE_TIMER ; 02 + const PIKACHU_MINIGAME_WAIT_AND_GOTO_NEXT ; 03 + const PIKACHU_MINIGAME_SHOW_JIGGLYPUFF ; 04 + const PIKACHU_MINIGAME_FADE_OUT ; 05 + SECTION "engine/games/pikachu_minigame.asm@Pikachu Minigame", ROMX PikachuMiniGame:: @@ -59,7 +75,7 @@ PikachuMiniGame:: call PikachuMiniGame_DrawBackground ld hl, wSpriteAnimDict - ld a, $22 ; anim dict values? + ld a, SPRITE_ANIM_INDEX_GS_INTRO_OMANYTE ld [hli], a ld a, SPRITE_ANIM_DICT_DEFAULT ld [hli], a @@ -142,7 +158,7 @@ PikachuMiniGame:: PikachuMiniGame_ClearBothTilemaps: ld hl, vBGMap1 - ld bc, $0280 + ld bc, SCREEN_WIDTH * BG_MAP_HEIGHT .clear_bgmap ld [hl], 0 inc hl @@ -152,7 +168,7 @@ PikachuMiniGame_ClearBothTilemaps: jr nz, .clear_bgmap ld hl, wTileMap - ld bc, $0168 + ld bc, SCREEN_WIDTH * SCREEN_HEIGHT .clear_tilemap ld [hl], 0 inc hl @@ -329,7 +345,7 @@ PikachuMiniGame_RunFrame: ld a, [hl] ; Skip minigame on pressing Start - and %00001000 + and START jr nz, .Done ld a, [wPikachuMinigameJumptableIndex] @@ -370,7 +386,7 @@ PikachuMiniGame_RunFrame: callab InitEffectObject ld hl, wVirtualOAM - ld c, $a0 + ld c, SPRITEOAMSTRUCT_LENGTH * NUM_SPRITE_OAM_STRUCTS xor a .clear_oam ld [hli], a @@ -408,11 +424,11 @@ PikachuMiniGame_RunTimer: add 1 daa ld [hl], a - cp $60 ; 1 minute + cp $60 ret c ; When gameplay time reaches 1 minute, end the game here - ld a, $02 + ld a, PIKACHU_MINIGAME_SET_NEXT_SCENE_TIMER ld [wPikachuMinigameJumptableIndex], a ret @@ -420,7 +436,7 @@ PikachuMiniGame_RunTimer: PikachuMiniGame_UpdateBlocks: ldh a, [hSCX] ld e, a - and $07 + and 7 ret nz ld a, $48 @@ -442,7 +458,7 @@ PikachuMiniGame_UpdateBlocks: ld [wVBCopySrc], a ld a, h ld [wVBCopySrc + 1], a - ld a, $01 + ld a, 1 ld [wVBCopySize], a ret @@ -465,18 +481,18 @@ PikachuMiniGame_PrintBCD: ; in the thousandths range? ld a, b swap a - and %00001111 + and $0f jr nz, .four_digits ; in the hundredths range? ld a, b - and %00001111 + and $0f jr nz, .three_digits ; in the tenths range? ld a, c swap a - and %00001111 + and $0f jr nz, .two_digits ; got one digit @@ -527,9 +543,9 @@ PikachuMiniGame_PrintBCD: ret PikachuMiniGame_PerformGameFunction: - jumptable .jumptable, wPikachuMinigameJumptableIndex + jumptable .Jumptable, wPikachuMinigameJumptableIndex -.jumptable +.Jumptable: ; jumptable here dw PikachuMiniGame_SetupScene dw PikachuMiniGame_NoteSpawner @@ -543,7 +559,7 @@ PikachuMiniGame_SetupScene: ld a, 4 ld [wPikachuMinigameScrollSpeed], a - ld a, %00110001 + ld a, D_LEFT | D_RIGHT | A_BUTTON ld [wPikachuMinigameControlEnable], a ld hl, wPikachuMinigameJumptableIndex @@ -570,7 +586,7 @@ PikachuMiniGame_WaitAndGotoNextScene: PikachuMiniGame_ShowJigglypuff: depixel 14, 24 - ld a, $32 + ld a, SPRITE_ANIM_INDEX_MINIGAME_JIGGLYPUFF call InitSpriteAnimStruct xor a @@ -667,13 +683,13 @@ PikachuMiniGame_NoteSpawner: ldh a, [hSCX] and $1f ld e, a - ld a, $00 + ld a, 0 sub e ld e, a - ld a, $03 - ld [$c4bc], a ; Hardcoded object loc + ld a, 3 + ld [wSpriteAnimCount], a - ld a, $31 ; NOTE + ld a, SPRITE_ANIM_INDEX_MINIGAME_NOTE ; NOTE call InitSpriteAnimStruct ; add one to the note counter @@ -734,10 +750,10 @@ PikachuMiniGame_NoteSpawner: add hl, de ld a, [wPikachuMinigameSpawnDataIndex] - and $07 + and 7 ld e, a inc a - cp $08 + cp 8 jr c, .determine_y_coords ; next spawn type @@ -783,14 +799,15 @@ MinigamePikachuDoMovement:: add hl, bc ld e, [hl] ld d, 0 - ld hl, .jump + ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl -.jump + +.Jumptable: dw .InitPikachuMovement dw .ControlPikachu dw .PikachuJumping @@ -799,7 +816,7 @@ MinigamePikachuDoMovement:: .InitPikachuMovement: ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc - ld [hl], 1 + ld [hl], MINIGAME_PIKACHU_CONTROL ld a, 2 ld [wPikachuMinigamePikachuNextAnim], a ret @@ -810,8 +827,7 @@ MinigamePikachuDoMovement:: and [hl] ld d, a -; Only read the A button - and %00000001 + and A_BUTTON jr nz, .do_jump ; Don't animate Pikachu when the screen is still @@ -852,7 +868,7 @@ MinigamePikachuDoMovement:: .fall_down_from_jump ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc - ld [hl], 3 + ld [hl], MINIGAME_PIKACHU_FALLING ret .FallDown: @@ -887,7 +903,7 @@ MinigamePikachuDoMovement:: ; Check if the Pikachu object collides with any of the note ; objects. - ld bc, $c41c ; Pikachu object, hardcoded + ld bc, wSpriteAnim1 ld a, 10 ; Number of objects to check .check_note_object push af @@ -1045,11 +1061,11 @@ MinigamePikachuCheckFloorCollision: ld a, [hl] ; Pikachu is jumping - cp 2 + cp MINIGAME_PIKACHU_JUMPING jr z, .jumping ; Pikachu is falling - cp 3 + cp MINIGAME_PIKACHU_FALLING jr z, .falling ld a, d @@ -1061,7 +1077,7 @@ MinigamePikachuCheckFloorCollision: ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc - ld [hl], 3 + ld [hl], MINIGAME_PIKACHU_FALLING ret .jumping @@ -1074,7 +1090,7 @@ MinigamePikachuCheckFloorCollision: ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc - ld [hl], 0 + ld [hl], MINIGAME_PIKACHU_INIT ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, [hl] @@ -1096,7 +1112,7 @@ MinigamePikachuCheckFloorCollision: .landed ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc - ld [hl], 0 + ld [hl], MINIGAME_PIKACHU_INIT ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld a, [hl] @@ -1152,13 +1168,13 @@ PikachuMiniGame_ScrollScene: srl a srl a ld e, a - ld d, $00 + ld d, 0 ld hl, vBGMap0 add hl, de ld a, l ldh [hRedrawRowOrColumnDest], a ld a, h - ldh [$ffe7], a + ldh [hRedrawRowOrColumnDest + 1], a ld a, $01 ldh [hRedrawRowOrColumnMode], a ret diff --git a/ram/wram.asm b/ram/wram.asm index 287d044..95ac322 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -93,6 +93,22 @@ NEXTU wSpriteAnimDict:: ds 10 * 2 ; NUM_SPRITEANIMDICT_ENTRIES * 2 +wSpriteAnimationStructs:: +; field 0: index +; fields 1-3: loaded from SpriteAnimSeqData +wSpriteAnim1:: sprite_anim_struct wSpriteAnim1 +wSpriteAnim2:: sprite_anim_struct wSpriteAnim2 +wSpriteAnim3:: sprite_anim_struct wSpriteAnim3 +wSpriteAnim4:: sprite_anim_struct wSpriteAnim4 +wSpriteAnim5:: sprite_anim_struct wSpriteAnim5 +wSpriteAnim6:: sprite_anim_struct wSpriteAnim6 +wSpriteAnim7:: sprite_anim_struct wSpriteAnim7 +wSpriteAnim8:: sprite_anim_struct wSpriteAnim8 +wSpriteAnim9:: sprite_anim_struct wSpriteAnim9 +wSpriteAnim10:: sprite_anim_struct wSpriteAnim10 +wSpriteAnimationStructsEnd:: + +wSpriteAnimCount:: db NEXTU ds 1 |