summaryrefslogtreecommitdiff
path: root/engine/trainer_card.asm
diff options
context:
space:
mode:
Diffstat (limited to 'engine/trainer_card.asm')
-rwxr-xr-xengine/trainer_card.asm611
1 files changed, 611 insertions, 0 deletions
diff --git a/engine/trainer_card.asm b/engine/trainer_card.asm
new file mode 100755
index 000000000..53acdbf53
--- /dev/null
+++ b/engine/trainer_card.asm
@@ -0,0 +1,611 @@
+Function25105: ; 25105
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ call Function2513b
+.asm_25117
+ call UpdateTime
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_25132
+ ld a, [hJoyLast]
+ and B_BUTTON
+ jr nz, .asm_25132
+ call Function2518e
+ call DelayFrame
+ jr .asm_25117
+.asm_25132
+ pop af
+ ld [Options], a
+ pop af
+ ld [VramState], a
+ ret
+
+Function2513b: ; 2513b (9:513b)
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+
+ callba Function8833e
+
+ ld hl, CardRightCornerGFX
+ ld de, VTiles2 tile $1c
+ ld bc, 1 tiles
+ ld a, BANK(CardRightCornerGFX)
+ call FarCopyBytes
+
+ ld hl, CardStatusGFX
+ ld de, VTiles2 tile $29
+ ld bc, $56 tiles
+ ld a, BANK(CardStatusGFX)
+ call FarCopyBytes
+
+ call Function25299
+
+ hlcoord 0, 8
+ ld d, $6
+ call Function253b0
+
+ call EnableLCD
+ call WaitBGMap
+ ld b, SCGB_15
+ call GetSGBLayout
+ call SetPalettes
+ call WaitBGMap
+ ld hl, wJumptableIndex
+ xor a
+rept 3
+ ld [hli], a
+endr
+ ld [hl], a
+ ret
+
+Function2518e: ; 2518e (9:518e)
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, $0
+ ld hl, Jumptable_2519d
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+
+Jumptable_2519d: ; 2519d (9:519d)
+ dw Function251b6
+ dw Function251d7
+ dw Function251f4
+ dw Function25221
+ dw Function2524c
+ dw Function25279
+ dw Function251b0
+
+
+Function251ab: ; 251ab (9:51ab)
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+Function251b0: ; 251b0 (9:51b0)
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+Function251b6: ; 251b6 (9:51b6)
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, $6
+ call Function253b0
+ call WaitBGMap
+ ld de, CardStatusGFX
+ ld hl, VTiles2 tile $29
+ lb bc, BANK(CardStatusGFX), $56
+ call Request2bpp
+ call Function2530a
+ call Function251ab
+ ret
+
+Function251d7: ; 251d7 (9:51d7)
+ call Function25415
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_RIGHT | A_BUTTON
+ jr nz, .pressed_right_a
+ ret
+
+.pressed_right_a
+ ld a, $2
+ ld [wJumptableIndex], a
+ ret
+; 251e9 (9:51e9)
+
+Function251e9: ; 251e9
+ ld a, [KantoBadges]
+ and a
+ ret z
+
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; 251f4
+
+Function251f4: ; 251f4 (9:51f4)
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, $6
+ call Function253b0
+ call WaitBGMap
+ ld de, LeaderGFX
+ ld hl, VTiles2 tile $29
+ lb bc, BANK(LeaderGFX), $56
+ call Request2bpp
+ ld de, BadgeGFX
+ ld hl, VTiles0 tile $00
+ lb bc, BANK(BadgeGFX), $2c
+ call Request2bpp
+ call Function2536c
+ call Function251ab
+ ret
+
+Function25221: ; 25221 (9:5221)
+ ld hl, Unknown_254c9
+ call Function25438
+ ld hl, hJoyLast
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, Function25246
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .asm_25235
+ ret
+.asm_25235
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+; 2523b (9:523b)
+
+Function2523b: ; 2523b
+ ld a, [KantoBadges]
+ and a
+ ret z
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; 25246
+
+Function25246: ; 25246
+ ld a, $6
+ ld [wJumptableIndex], a
+ ret
+
+Function2524c: ; 2524c (9:524c)
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, $6
+ call Function253b0
+ call WaitBGMap
+ ld de, LeaderGFX2
+ ld hl, VTiles2 tile $29
+ lb bc, BANK(LeaderGFX2), $56
+ call Request2bpp
+ ld de, BadgeGFX2
+ ld hl, VTiles0 tile $00
+ lb bc, BANK(BadgeGFX2), $2c
+ call Request2bpp
+ call Function2536c
+ call Function251ab
+ ret
+
+Function25279: ; 25279 (9:5279)
+ ld hl, Unknown_254c9
+ call Function25438
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .asm_2528d
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .asm_25293
+ ret
+.asm_2528d
+ ld a, $2
+ ld [wJumptableIndex], a
+ ret
+.asm_25293
+ ld a, $0
+ ld [wJumptableIndex], a
+ ret
+
+Function25299: ; 25299 (9:5299)
+ hlcoord 0, 0
+ ld d, $5
+ call Function253b0
+ hlcoord 2, 2
+ ld de, String_252ec
+ call PlaceString
+ hlcoord 2, 4
+ ld de, Tilemap_252f9
+ call Function253a8
+ hlcoord 7, 2
+ ld de, PlayerName
+ call PlaceString
+ hlcoord 5, 4
+ ld de, PlayerID
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ hlcoord 7, 6
+ ld de, Money
+ lb bc, PRINTNUM_MONEY | 3, 6
+ call PrintNum
+ hlcoord 1, 3
+ ld de, Tilemap_252fc
+ call Function253a8
+ hlcoord 14, 1
+ lb bc, 5, 7
+ xor a
+ ld [hFillBox], a
+ predef FillBox
+ ret
+; 252ec (9:52ec)
+
+String_252ec: ; 252ec
+ db "NAME/"
+ next ""
+ next "MONEY@"
+
+Tilemap_252f9: ; 252f9
+ db $27, $28, $ff ; ID NO
+
+Tilemap_252fc: ; 252fc
+ db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, $ff ; ____________>
+; 2530a
+
+Function2530a: ; 2530a (9:530a)
+ hlcoord 2, 10
+ ld de, String_2534c
+ call PlaceString
+ hlcoord 10, 15
+ ld de, String_2535c
+ call PlaceString
+ ld hl, PokedexCaught
+ ld b, $20
+ call CountSetBits
+ ld de, wd265
+ hlcoord 15, 10
+ lb bc, 1, 3
+ call PrintNum
+ call Function25415
+ hlcoord 2, 8
+ ld de, Tilemap_25366
+ call Function253a8
+ ld a, [StatusFlags] ; pokedex
+ bit 0, a
+ ret nz
+ hlcoord 1, 9
+ lb bc, 2, 17
+ call ClearBox
+ ret
+; 2534c (9:534c)
+
+String_2534c: ; 2534c
+ db "#DEX"
+ next "PLAY TIME"
+ db "@"
+
+String_2535b: ; 2535b
+ db "@"
+
+String_2535c: ; 2535c
+ db " BADGES▶@"
+
+Tilemap_25366: ; 25366
+ db $29, $2a, $2b, $2c, $2d, $ff
+; 2536c
+
+Function2536c: ; 2536c (9:536c)
+ hlcoord 2, 8
+ ld de, Tilemap_253a2
+ call Function253a8
+ hlcoord 2, 10
+ ld a, $29
+ ld c, $4
+.asm_2537c
+ call Function253f4
+rept 4
+ inc hl
+endr
+ dec c
+ jr nz, .asm_2537c
+ hlcoord 2, 13
+ ld a, $51
+ ld c, $4
+.asm_2538d
+ call Function253f4
+rept 4
+ inc hl
+endr
+ dec c
+ jr nz, .asm_2538d
+ xor a
+ ld [wcf64], a
+ ld hl, Unknown_254c9
+ call Function25448
+ ret
+; 253a2 (9:53a2)
+
+Tilemap_253a2: ; 253a2
+ db $79, $7a, $7b, $7c, $7d, $ff ; "BADGES"
+; 253a8
+
+Function253a8: ; 253a8 (9:53a8)
+ ld a, [de]
+ cp $ff
+ ret z
+ ld [hli], a
+ inc de
+ jr Function253a8
+
+Function253b0: ; 253b0 (9:53b0)
+ ld e, $14
+.asm_253b2
+ ld a, $23
+ ld [hli], a
+ dec e
+ jr nz, .asm_253b2
+ ld a, $23
+ ld [hli], a
+ ld e, $11
+ ld a, $7f
+.asm_253bf
+ ld [hli], a
+ dec e
+ jr nz, .asm_253bf
+ ld a, $1c
+ ld [hli], a
+ ld a, $23
+ ld [hli], a
+.asm_253c9
+ ld a, $23
+ ld [hli], a
+ ld e, $12
+ ld a, $7f
+.asm_253d0
+ ld [hli], a
+ dec e
+ jr nz, .asm_253d0
+ ld a, $23
+ ld [hli], a
+ dec d
+ jr nz, .asm_253c9
+ ld a, $23
+ ld [hli], a
+ ld a, $24
+ ld [hli], a
+ ld e, $11
+ ld a, $7f
+.asm_253e4
+ ld [hli], a
+ dec e
+ jr nz, .asm_253e4
+ ld a, $23
+ ld [hli], a
+ ld e, $14
+.asm_253ed
+ ld a, $23
+ ld [hli], a
+ dec e
+ jr nz, .asm_253ed
+ ret
+
+Function253f4: ; 253f4 (9:53f4)
+ push de
+ push hl
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld de, $11
+ add hl, de
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld de, $11
+ add hl, de
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ pop hl
+ pop de
+ ret
+
+Function25415: ; 25415 (9:5415)
+ hlcoord 11, 12
+ ld de, GameTimeHours
+ lb bc, 2, 4
+ call PrintNum
+ inc hl
+ ld de, GameTimeMinutes
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ld a, [hVBlankCounter]
+ and $1f
+ ret nz
+ hlcoord 15, 12
+ ld a, [hl]
+ xor $51
+ ld [hl], a
+ ret
+
+Function25438: ; 25438 (9:5438)
+ ld a, [hVBlankCounter]
+ and $7
+ ret nz
+ ld a, [wcf64]
+ inc a
+ and $7
+ ld [wcf64], a
+ jr Function25448
+
+Function25448: ; 25448 (9:5448)
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [de]
+ ld c, a
+ ld de, Sprites
+ ld b, 8
+.asm_25453
+ srl c
+ push bc
+ jr nc, .asm_25472
+ push hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld [wcf66], a
+ ld a, [wcf64]
+ add l
+ ld l, a
+ ld a, 0
+ adc h
+ ld h, a
+ ld a, [hl]
+ ld [wcf65], a
+ call Function2547b
+ pop hl
+.asm_25472
+ ld bc, $b
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_25453
+ ret
+
+Function2547b: ; 2547b (9:547b)
+ ld a, [wcf65]
+ and $80
+ jr nz, .asm_25487
+ ld hl, Unknown_254a7
+ jr .asm_2548a
+.asm_25487
+ ld hl, Unknown_254b8
+.asm_2548a
+ ld a, [hli]
+ cp $ff
+ ret z
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [wcf65]
+ and $7f
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wcf66]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ jr .asm_2548a
+; 254a7 (9:54a7)
+
+Unknown_254a7: ; 254a7
+ db $00, $00, $00, $00
+ db $00, $08, $01, $00
+ db $08, $00, $02, $00
+ db $08, $08, $03, $00
+ db $ff
+
+Unknown_254b8: ; 254b8
+ db $00, $00, $01, $20
+ db $00, $08, $00, $20
+ db $08, $00, $03, $20
+ db $08, $08, $02, $20
+ db $ff
+
+Unknown_254c9: ; 254c9
+; Template OAM data for each badge on the trainer card.
+; Format:
+ ; y, x, palette
+ ; cycle 1: face tile, in1 tile, in2 tile, in3 tile
+ ; cycle 2: face tile, in1 tile, in2 tile, in3 tile
+
+ dw JohtoBadges
+
+ ; Zephyrbadge
+ db $68, $18, $00
+ db $00, $20, $24, $20 | $80
+ db $00, $20, $24, $20 | $80
+
+ ; Hivebadge
+ db $68, $38, $00
+ db $04, $20, $24, $20 | $80
+ db $04, $20, $24, $20 | $80
+
+ ; Plainbadge
+ db $68, $58, $00
+ db $08, $20, $24, $20 | $80
+ db $08, $20, $24, $20 | $80
+
+ ; Fogbadge
+ db $68, $78, $00
+ db $0c, $20, $24, $20 | $80
+ db $0c, $20, $24, $20 | $80
+
+ ; Mineralbadge
+ db $80, $38, $00
+ db $10, $20, $24, $20 | $80
+ db $10, $20, $24, $20 | $80
+
+ ; Stormbadge
+ db $80, $18, $00
+ db $14, $20, $24, $20 | $80
+ db $14, $20, $24, $20 | $80
+
+ ; Glacierbadge
+ db $80, $58, $00
+ db $18, $20, $24, $20 | $80
+ db $18, $20, $24, $20 | $80
+
+ ; Risingbadge
+ ; X-flips on alternate cycles.
+ db $80, $78, $00
+ db $1c, $20, $24, $20 | $80
+ db $1c | $80, $20, $24, $20 | $80
+; 25523
+
+CardStatusGFX: INCBIN "gfx/misc/card_status.2bpp"
+
+LeaderGFX: INCBIN "gfx/misc/leaders.w24.2bpp"
+LeaderGFX2: INCBIN "gfx/misc/leaders.w24.2bpp"
+BadgeGFX: INCBIN "gfx/misc/badges.2bpp"
+BadgeGFX2: INCBIN "gfx/misc/badges.2bpp"
+
+CardRightCornerGFX: INCBIN "gfx/misc/card_right_corner.2bpp"