summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorentrpntr <entrpntr@gmail.com>2020-04-30 00:02:58 -0400
committerentrpntr <entrpntr@gmail.com>2020-04-30 00:02:58 -0400
commit8b5cc02a48b6615f3ad4ddd37798f9ed2976c5bd (patch)
tree0c318ce141d0dce91a3ae2cb1c22ef7a34cbde75
parenta308a1adadc1f782577c23ca62c0b3abd715b0ce (diff)
Add engine/menus/trainer_card.asm.
-rw-r--r--engine/menus/trainer_card.asm624
-rw-r--r--gfx/trainer_card/badges.2bppbin0 -> 704 bytes
-rw-r--r--gfx/trainer_card/badges.pngbin0 -> 517 bytes
-rw-r--r--gfx/trainer_card/card_status.2bppbin0 -> 96 bytes
-rw-r--r--gfx/trainer_card/card_status.pngbin0 -> 121 bytes
-rw-r--r--gfx/trainer_card/chris_card.2bppbin0 -> 560 bytes
-rw-r--r--gfx/trainer_card/chris_card.pngbin0 -> 435 bytes
-rw-r--r--gfx/trainer_card/leaders.2bppbin0 -> 1376 bytes
-rw-r--r--gfx/trainer_card/leaders.pngbin0 -> 923 bytes
-rw-r--r--gfx/trainer_card/trainer_card.2bppbin0 -> 96 bytes
-rw-r--r--gfx/trainer_card/trainer_card.pngbin0 -> 135 bytes
-rw-r--r--main.asm4
-rw-r--r--tools/gfx.py66
-rw-r--r--wram.asm39
14 files changed, 694 insertions, 39 deletions
diff --git a/engine/menus/trainer_card.asm b/engine/menus/trainer_card.asm
new file mode 100644
index 00000000..7061d4bd
--- /dev/null
+++ b/engine/menus/trainer_card.asm
@@ -0,0 +1,624 @@
+; TrainerCard.Jumptable indexes
+ const_def
+ const TRAINERCARDSTATE_PAGE1_LOADGFX ; 0
+ const TRAINERCARDSTATE_PAGE1_JOYPAD ; 1
+ const TRAINERCARDSTATE_PAGE2_LOADGFX ; 2
+ const TRAINERCARDSTATE_PAGE2_JOYPAD ; 3
+ const TRAINERCARDSTATE_PAGE3_LOADGFX ; 4
+ const TRAINERCARDSTATE_PAGE3_JOYPAD ; 5
+ const TRAINERCARDSTATE_QUIT ; 6
+
+TrainerCard:
+ ld a, [wVramState]
+ push af
+ xor a
+ ld [wVramState], a
+ ld hl, wOptions
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+ call .InitRAM
+.loop
+ call UpdateTime
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .quit
+ ldh a, [hJoyLast]
+ and B_BUTTON
+ jr nz, .quit
+ call .RunJumptable
+ call DelayFrame
+ jr .loop
+
+.quit
+ pop af
+ ld [wOptions], a
+ pop af
+ ld [wVramState], a
+ ret
+
+.InitRAM:
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTilemap
+ call DisableLCD
+
+ ld hl, ChrisCardPic
+ ld de, vTiles2
+ ld bc, 41 tiles
+ ld a, BANK(ChrisCardPic)
+ call FarCopyBytes
+
+ ld hl, CardStatusGFX
+ ld de, vTiles2 tile $29
+ ld bc, 86 tiles
+ ld a, BANK(CardStatusGFX)
+ call FarCopyBytes
+
+ call TrainerCard_PrintTopHalfOfCard
+
+ hlcoord 0, 8
+ ld d, 6
+ call TrainerCard_InitBorder
+
+ call EnableLCD
+ call WaitBGMap
+ ld b, SCGB_TRAINER_CARD
+ call GetSGBLayout
+ call SetPalettes
+ call WaitBGMap
+ ld hl, wJumptableIndex
+ xor a ; TRAINERCARDSTATE_PAGE1_LOADGFX
+ ld [hli], a ; wJumptableIndex
+ ld [hli], a ; wTrainerCardBadgeFrameCounter
+ ld [hli], a ; wTrainerCardBadgeTileID
+ ld [hl], a ; wTrainerCardBadgeAttributes
+ ret
+
+.RunJumptable:
+ jumptable .Jumptable, wJumptableIndex
+
+.Jumptable:
+; entries correspond to TRAINERCARDSTATE_* constants
+ dw TrainerCard_Page1_LoadGFX
+ dw TrainerCard_Page1_Joypad
+ dw TrainerCard_Page2_LoadGFX
+ dw TrainerCard_Page2_Joypad
+ dw TrainerCard_Page3_LoadGFX
+ dw TrainerCard_Page3_Joypad
+ dw TrainerCard_Quit
+
+TrainerCard_IncrementJumptable:
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+
+TrainerCard_Quit:
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+TrainerCard_Page1_LoadGFX:
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, 6
+ call TrainerCard_InitBorder
+ call WaitBGMap
+ ld de, CardStatusGFX
+ ld hl, vTiles2 tile $29
+ lb bc, BANK(CardStatusGFX), 86
+ call Request2bpp
+ call TrainerCard_Page1_PrintDexCaught_GameTime
+ call TrainerCard_IncrementJumptable
+ ret
+
+TrainerCard_Page1_Joypad:
+ call TrainerCard_Page1_PrintGameTime
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_RIGHT | A_BUTTON
+ jr nz, .pressed_right_a
+ ret
+
+.pressed_right_a
+ ld a, TRAINERCARDSTATE_PAGE2_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+.Unreferenced_KantoCheck:
+ ld a, [wKantoBadges]
+ and a
+ ret z
+ ld a, TRAINERCARDSTATE_PAGE3_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+TrainerCard_Page2_LoadGFX:
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, 6
+ call TrainerCard_InitBorder
+ call WaitBGMap
+ ld de, LeaderGFX
+ ld hl, vTiles2 tile $29
+ lb bc, BANK(LeaderGFX), 86
+ call Request2bpp
+ ld de, BadgeGFX
+ ld hl, vTiles0 tile $00
+ lb bc, BANK(BadgeGFX), 44
+ call Request2bpp
+ call TrainerCard_Page2_3_InitObjectsAndStrings
+ call TrainerCard_IncrementJumptable
+ ret
+
+TrainerCard_Page2_Joypad:
+ ld hl, TrainerCard_JohtoBadgesOAM
+ call TrainerCard_Page2_3_AnimateBadges
+ ld hl, hJoyLast
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .Quit
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .d_left
+ ret
+
+.d_left
+ ld a, TRAINERCARDSTATE_PAGE1_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+.Unreferenced_KantoCheck:
+ ld a, [wKantoBadges]
+ and a
+ ret z
+ ld a, TRAINERCARDSTATE_PAGE3_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+.Quit:
+ ld a, TRAINERCARDSTATE_QUIT
+ ld [wJumptableIndex], a
+ ret
+
+TrainerCard_Page3_LoadGFX:
+ call ClearSprites
+ hlcoord 0, 8
+ ld d, 6
+ call TrainerCard_InitBorder
+ call WaitBGMap
+ ld de, LeaderGFX2
+ ld hl, vTiles2 tile $29
+ lb bc, BANK(LeaderGFX2), 86
+ call Request2bpp
+ ld de, BadgeGFX2
+ ld hl, vTiles0 tile $00
+ lb bc, BANK(BadgeGFX2), 44
+ call Request2bpp
+ call TrainerCard_Page2_3_InitObjectsAndStrings
+ call TrainerCard_IncrementJumptable
+ ret
+
+TrainerCard_Page3_Joypad:
+ ld hl, TrainerCard_JohtoBadgesOAM
+ call TrainerCard_Page2_3_AnimateBadges
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .left
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .right
+ ret
+
+.left
+ ld a, TRAINERCARDSTATE_PAGE2_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+.right
+ ld a, TRAINERCARDSTATE_PAGE1_LOADGFX
+ ld [wJumptableIndex], a
+ ret
+
+TrainerCard_PrintTopHalfOfCard:
+ hlcoord 0, 0
+ ld d, 5
+ call TrainerCard_InitBorder
+ hlcoord 2, 2
+ ld de, .Name_Money
+ call PlaceString
+ hlcoord 2, 4
+ ld de, .ID_No
+ call TrainerCardSetup_PlaceTilemapString
+ hlcoord 7, 2
+ ld de, wPlayerName
+ call PlaceString
+ hlcoord 5, 4
+ ld de, wPlayerID
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ hlcoord 7, 6
+ ld de, wMoney
+ lb bc, PRINTNUM_MONEY | 3, 6
+ call PrintNum
+ hlcoord 1, 3
+ ld de, .HorizontalDivider
+ call TrainerCardSetup_PlaceTilemapString
+ hlcoord 14, 1
+ ld de, SCREEN_WIDTH
+ xor a
+ ld b, 7
+
+.row
+ ld c, 5
+ push hl
+
+.col
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .col
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .row
+ ret
+
+.Name_Money:
+ db "NAME/"
+ next ""
+ next "MONEY@"
+
+.ID_No:
+ db $27, $28, -1 ; ID NO
+
+.HorizontalDivider:
+ db $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $25, $26, -1 ; ____________>
+
+TrainerCard_Page1_PrintDexCaught_GameTime:
+ hlcoord 2, 10
+ ld de, .Dex_PlayTime
+ call PlaceString
+ hlcoord 12, 15
+ ld de, .Badges
+ call PlaceString
+ ld hl, wPokedexCaught
+ ld b, wEndPokedexCaught - wPokedexCaught
+ call CountSetBits
+ ld de, wNumSetBits
+ hlcoord 15, 10
+ lb bc, 1, 3
+ call PrintNum
+ call TrainerCard_Page1_PrintGameTime
+ hlcoord 2, 8
+ ld de, .StatusTilemap
+ call TrainerCardSetup_PlaceTilemapString
+ ld a, [wStatusFlags]
+ bit STATUSFLAGS_POKEDEX_F, a
+ ret nz
+ hlcoord 1, 9
+ lb bc, 2, 17
+ call ClearBox
+ ret
+
+.Dex_PlayTime:
+ db "#DEX"
+ next "PLAY TIME@"
+
+ db "@" ; unused
+
+.Badges:
+ db "BADGES▶@"
+
+.StatusTilemap:
+ db $29, $2a, $2b, $2c, $2d, -1
+
+TrainerCard_Page2_3_InitObjectsAndStrings:
+ hlcoord 2, 8
+ ld de, .BadgesTilemap
+ call TrainerCardSetup_PlaceTilemapString
+ hlcoord 2, 10
+ ld a, $29
+ ld c, 4
+.loop
+ call TrainerCard_Page2_3_PlaceLeadersFaces
+rept 4
+ inc hl
+endr
+ dec c
+ jr nz, .loop
+ hlcoord 2, 13
+ ld a, $51
+ ld c, 4
+.loop2
+ call TrainerCard_Page2_3_PlaceLeadersFaces
+rept 4
+ inc hl
+endr
+ dec c
+ jr nz, .loop2
+ xor a
+ ld [wTrainerCardBadgeFrameCounter], a
+ ld hl, TrainerCard_JohtoBadgesOAM
+ call TrainerCard_Page2_3_OAMUpdate
+ ret
+
+.BadgesTilemap:
+ db $79, $7a, $7b, $7c, $7d, -1 ; "BADGES"
+
+TrainerCardSetup_PlaceTilemapString:
+.loop
+ ld a, [de]
+ cp -1
+ ret z
+ ld [hli], a
+ inc de
+ jr .loop
+
+TrainerCard_InitBorder:
+ ld e, SCREEN_WIDTH
+.loop1
+ ld a, $23
+ ld [hli], a
+ dec e
+ jr nz, .loop1
+
+ ld a, $23
+ ld [hli], a
+ ld e, SCREEN_HEIGHT - 1
+ ld a, " "
+.loop2
+ ld [hli], a
+ dec e
+ jr nz, .loop2
+
+ ld a, $4
+ ld [hli], a
+ ld a, $23
+ ld [hli], a
+.loop3
+ ld a, $23
+ ld [hli], a
+
+ ld e, SCREEN_HEIGHT
+ ld a, " "
+.loop4
+ ld [hli], a
+ dec e
+ jr nz, .loop4
+
+ ld a, $23
+ ld [hli], a
+ dec d
+ jr nz, .loop3
+
+ ld a, $23
+ ld [hli], a
+ ld a, $24
+ ld [hli], a
+
+ ld e, SCREEN_HEIGHT - 1
+ ld a, " "
+.loop5
+ ld [hli], a
+ dec e
+ jr nz, .loop5
+ ld a, $23
+ ld [hli], a
+ ld e, SCREEN_WIDTH
+.loop6
+ ld a, $23
+ ld [hli], a
+ dec e
+ jr nz, .loop6
+ ret
+
+TrainerCard_Page2_3_PlaceLeadersFaces:
+ 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, SCREEN_WIDTH - 3
+ add hl, de
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld de, SCREEN_WIDTH - 3
+ add hl, de
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ ld [hli], a
+ inc a
+ pop hl
+ pop de
+ ret
+
+TrainerCard_Page1_PrintGameTime:
+ hlcoord 11, 12
+ ld de, wGameTimeHours
+ lb bc, 2, 4
+ call PrintNum
+ inc hl
+ ld de, wGameTimeMinutes
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ldh a, [hVBlankCounter]
+ and $1f
+ ret nz
+ hlcoord 15, 12
+ ld a, [hl]
+ xor " " ^ $2e ; alternate between space and small colon ($2e) tiles
+ ld [hl], a
+ ret
+
+TrainerCard_Page2_3_AnimateBadges:
+ ldh a, [hVBlankCounter]
+ and %111
+ ret nz
+ ld a, [wTrainerCardBadgeFrameCounter]
+ inc a
+ and %111
+ ld [wTrainerCardBadgeFrameCounter], a
+ jr TrainerCard_Page2_3_OAMUpdate
+
+TrainerCard_Page2_3_OAMUpdate:
+; copy flag array pointer
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+; get flag array
+ ld d, a
+ ld a, [de]
+ ld c, a
+ ld de, wVirtualOAMSprite00
+ ld b, NUM_JOHTO_BADGES
+.loop
+ srl c
+ push bc
+ jr nc, .skip_badge
+ push hl
+ ld a, [hli] ; y
+ ld b, a
+ ld a, [hli] ; x
+ ld c, a
+ ld a, [hli] ; pal
+ ld [wTrainerCardBadgeAttributes], a
+ ld a, [wTrainerCardBadgeFrameCounter]
+ add l
+ ld l, a
+ ld a, 0
+ adc h
+ ld h, a
+ ld a, [hl]
+ ld [wTrainerCardBadgeTileID], a
+ call .PrepOAM
+ pop hl
+.skip_badge
+ ld bc, $b ; 3 + 2 * 4
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .loop
+ ret
+
+.PrepOAM:
+ ld a, [wTrainerCardBadgeTileID]
+ and 1 << 7
+ jr nz, .xflip
+ ld hl, .facing1
+ jr .loop2
+
+.xflip
+ ld hl, .facing2
+.loop2
+ ld a, [hli]
+ cp -1
+ ret z
+ add b
+ ld [de], a ; y
+ inc de
+
+ ld a, [hli]
+ add c
+ ld [de], a ; x
+ inc de
+
+ ld a, [wTrainerCardBadgeTileID]
+ and $ff ^ (1 << 7)
+ add [hl]
+ ld [de], a ; tile id
+ inc hl
+ inc de
+
+ ld a, [wTrainerCardBadgeAttributes]
+ add [hl]
+ ld [de], a ; attributes
+ inc hl
+ inc de
+ jr .loop2
+
+.facing1
+ dbsprite 0, 0, 0, 0, $00, 0
+ dbsprite 1, 0, 0, 0, $01, 0
+ dbsprite 0, 1, 0, 0, $02, 0
+ dbsprite 1, 1, 0, 0, $03, 0
+ db -1
+
+.facing2
+ dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP
+ dbsprite 1, 0, 0, 0, $00, 0 | X_FLIP
+ dbsprite 0, 1, 0, 0, $03, 0 | X_FLIP
+ dbsprite 1, 1, 0, 0, $02, 0 | X_FLIP
+ db -1
+
+TrainerCard_JohtoBadgesOAM:
+; 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 wJohtoBadges
+
+ ; Zephyrbadge
+ db $68, $18, 0
+ db $00, $20, $24, $20 | (1 << 7)
+ db $00, $20, $24, $20 | (1 << 7)
+
+ ; Hivebadge
+ db $68, $38, 0
+ db $04, $20, $24, $20 | (1 << 7)
+ db $04, $20, $24, $20 | (1 << 7)
+
+ ; Plainbadge
+ db $68, $58, 0
+ db $08, $20, $24, $20 | (1 << 7)
+ db $08, $20, $24, $20 | (1 << 7)
+
+ ; Fogbadge
+ db $68, $78, 0
+ db $0c, $20, $24, $20 | (1 << 7)
+ db $0c, $20, $24, $20 | (1 << 7)
+
+ ; Mineralbadge
+ db $80, $38, 0
+ db $10, $20, $24, $20 | (1 << 7)
+ db $10, $20, $24, $20 | (1 << 7)
+
+ ; Stormbadge
+ db $80, $18, 0
+ db $14, $20, $24, $20 | (1 << 7)
+ db $14, $20, $24, $20 | (1 << 7)
+
+ ; Glacierbadge
+ db $80, $58, 0
+ db $18, $20, $24, $20 | (1 << 7)
+ db $18, $20, $24, $20 | (1 << 7)
+
+ ; Risingbadge
+ ; X-flips on alternate cycles.
+ db $80, $78, 0
+ db $1c, $20, $24, $20 | (1 << 7)
+ db $1c | (1 << 7), $20, $24, $20 | (1 << 7)
+
+ChrisCardPic: INCBIN "gfx/trainer_card/chris_card.2bpp"
+CardGFX: INCBIN "gfx/trainer_card/trainer_card.2bpp"
+CardStatusGFX: INCBIN "gfx/trainer_card/card_status.2bpp"
+
+LeaderGFX: INCBIN "gfx/trainer_card/leaders.2bpp"
+LeaderGFX2: INCBIN "gfx/trainer_card/leaders.2bpp"
+BadgeGFX: INCBIN "gfx/trainer_card/badges.2bpp"
+BadgeGFX2: INCBIN "gfx/trainer_card/badges.2bpp"
diff --git a/gfx/trainer_card/badges.2bpp b/gfx/trainer_card/badges.2bpp
new file mode 100644
index 00000000..52cf24e1
--- /dev/null
+++ b/gfx/trainer_card/badges.2bpp
Binary files differ
diff --git a/gfx/trainer_card/badges.png b/gfx/trainer_card/badges.png
new file mode 100644
index 00000000..4e5820da
--- /dev/null
+++ b/gfx/trainer_card/badges.png
Binary files differ
diff --git a/gfx/trainer_card/card_status.2bpp b/gfx/trainer_card/card_status.2bpp
new file mode 100644
index 00000000..3234368a
--- /dev/null
+++ b/gfx/trainer_card/card_status.2bpp
Binary files differ
diff --git a/gfx/trainer_card/card_status.png b/gfx/trainer_card/card_status.png
new file mode 100644
index 00000000..b33bb202
--- /dev/null
+++ b/gfx/trainer_card/card_status.png
Binary files differ
diff --git a/gfx/trainer_card/chris_card.2bpp b/gfx/trainer_card/chris_card.2bpp
new file mode 100644
index 00000000..c24a76d9
--- /dev/null
+++ b/gfx/trainer_card/chris_card.2bpp
Binary files differ
diff --git a/gfx/trainer_card/chris_card.png b/gfx/trainer_card/chris_card.png
new file mode 100644
index 00000000..cba27a01
--- /dev/null
+++ b/gfx/trainer_card/chris_card.png
Binary files differ
diff --git a/gfx/trainer_card/leaders.2bpp b/gfx/trainer_card/leaders.2bpp
new file mode 100644
index 00000000..fecae45d
--- /dev/null
+++ b/gfx/trainer_card/leaders.2bpp
Binary files differ
diff --git a/gfx/trainer_card/leaders.png b/gfx/trainer_card/leaders.png
new file mode 100644
index 00000000..87413543
--- /dev/null
+++ b/gfx/trainer_card/leaders.png
Binary files differ
diff --git a/gfx/trainer_card/trainer_card.2bpp b/gfx/trainer_card/trainer_card.2bpp
new file mode 100644
index 00000000..09de7a2d
--- /dev/null
+++ b/gfx/trainer_card/trainer_card.2bpp
Binary files differ
diff --git a/gfx/trainer_card/trainer_card.png b/gfx/trainer_card/trainer_card.png
new file mode 100644
index 00000000..88ce35bc
--- /dev/null
+++ b/gfx/trainer_card/trainer_card.png
Binary files differ
diff --git a/main.asm b/main.asm
index 1dde3d43..5d00843c 100644
--- a/main.asm
+++ b/main.asm
@@ -240,9 +240,7 @@ INCLUDE "engine/menus/menu_2.asm"
INCLUDE "engine/pokemon/mon_submenu.asm"
INCLUDE "engine/battle/menu.asm"
INCLUDE "engine/items/buy_sell_toss.asm"
-
-TrainerCard::
- dr $25061, $267af
+INCLUDE "engine/menus/trainer_card.asm"
ProfOaksPC::
dr $267af, $267ca
diff --git a/tools/gfx.py b/tools/gfx.py
index eadc7add..fcdc3f8a 100644
--- a/tools/gfx.py
+++ b/tools/gfx.py
@@ -101,6 +101,24 @@ def filepath_rules(filepath):
args['pal_file'] = os.path.join(filedir, trainer_name + '.pal')
args['pic'] = True
+ elif 'gfx/battle' in filedir:
+ if name == 'dude':
+ args['pic_dimensions'] = 6, 6
+
+ elif 'gfx/icons' in filedir:
+ if name == 'mail_big':
+ args['width'] = 16
+
+ elif 'gfx/intro' in filedir:
+ if name == 'logo_star':
+ args['width'] = 8
+ elif name in ['gamefreak_logo', 'logo_sparkle']:
+ args['width'] = 24
+ elif name == 'gamefreak_presents':
+ args['width'] = 104
+ elif name == 'copyright':
+ args['width'] = 240
+
elif 'gfx/mail' in filedir:
if name in mail_px8:
args['width'] = 8
@@ -118,29 +136,9 @@ def filepath_rules(filepath):
args['width'] = 56
args['rows'] = [(0, 6), (1, 6), (2, 6)]
- elif 'gfx/pack' in filedir:
- if name == 'pack':
- args['width'] = 40
- elif name == 'pack_menu':
- args['width'] = 128
-
- elif 'gfx/intro' in filedir:
- if name == 'logo_star':
- args['width'] = 8
- elif name in ['gamefreak_logo', 'logo_sparkle']:
- args['width'] = 24
- elif name == 'gamefreak_presents':
- args['width'] = 104
- elif name == 'copyright':
- args['width'] = 240
-
elif 'gfx/naming_screen' in filedir:
args['width'] = 8
- elif 'gfx/icons' in filedir:
- if name == 'mail_big':
- args['width'] = 16
-
elif 'gfx/overworld' in filedir:
if name == 'heal_machine':
args['width'] = 8
@@ -150,6 +148,16 @@ def filepath_rules(filepath):
elif name in overworld_px16:
args['width'] = 16
+ elif 'gfx/pack' in filedir:
+ if name == 'pack':
+ args['width'] = 40
+ elif name == 'pack_menu':
+ args['width'] = 128
+
+ elif 'gfx/player' in filedir:
+ if name == 'chris_back':
+ args['pic_dimensions'] = 6, 6
+
elif 'gfx/sgb' in filedir:
args['width'] = 128
args['pal_file'] = os.path.join(filedir, name + '.pal')
@@ -162,20 +170,22 @@ def filepath_rules(filepath):
else:
args['width'] = 16
+ elif 'gfx/trainer_card' in filedir:
+ if name in ['badges', 'trainer_card']:
+ args['width'] = 16
+ elif name == 'card_status':
+ args['width'] = 48
+ elif name == 'chris_card':
+ args['width'] = 40
+ elif name == 'leaders':
+ args['width'] = 80
+
elif 'gfx/unknown' in filedir:
if name == 'gfx_170f1':
args['width'] = 128
elif name == 'gfx_17079':
args['width'] = 16
- elif 'gfx/player' in filedir:
- if name == 'chris_back':
- args['pic_dimensions'] = 6, 6
-
- elif 'gfx/battle' in filedir:
- if name == 'dude':
- args['pic_dimensions'] = 6, 6
-
elif os.path.join(filedir, name) in pics:
args['pic'] = True
diff --git a/wram.asm b/wram.asm
index 913d2b5b..b77d21d5 100644
--- a/wram.asm
+++ b/wram.asm
@@ -1766,17 +1766,40 @@ wce62:: ds 1 ; ce62
wce63::
wJumptableIndex::
db
-wce64::
+
+UNION ; ce64
+; unidentified
+wce64:: db
+wce65:: db
+wce66:: db
+
+NEXTU ; ce64
+; intro and title data
+wIntroSceneFrameCounter:: db
+UNION ; ce65
+wIntroSceneTimer:: db
+NEXTU ; ce65
+wTitleScreenTimer:: dw
+ENDU
+
+NEXTU ; ce64
+; pack
+wPackJumptableIndex:: db
+wCurPocket:: db
+wPackUsedItem:: db
+
+NEXTU ; ce64
+; trainer card badges
+wTrainerCardBadgeFrameCounter:: db
+wTrainerCardBadgeTileID:: db
+wTrainerCardBadgeAttributes:: db
+
+NEXTU ; ce64
+; miscellaneous
wFrameCounter::
wMomBankDigitCursorPosition::
db
-wce65::
-wIntroSceneTimer::
-wCurPocket::
- db
-wce66::
-wPackUsedItem::
- db
+ENDU ; ce67
wRequested2bpp:: ds 1 ; ce67
wRequested2bppSource:: dw ; ce68