summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2018-06-07 11:01:53 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2018-06-07 11:01:53 -0400
commit709ed0314d03e0a6dc1e3838875311c0f12ee46d (patch)
tree7f828794351b32d09e2ed6e4341bb2ea74db4ad6
parente45a36ecaa0dd46594f49f52206707ed60eb2a3e (diff)
tilemap functions
-rw-r--r--constants.asm1
-rw-r--r--constants/sgb_constants.asm150
-rw-r--r--engine/battle_anims/bg_effects.asm2
-rw-r--r--home/tilemap.asm70
-rw-r--r--home/util.asm32
-rw-r--r--shim.sym8
-rw-r--r--wram.asm4
7 files changed, 257 insertions, 10 deletions
diff --git a/constants.asm b/constants.asm
index cac62a5..c141901 100644
--- a/constants.asm
+++ b/constants.asm
@@ -31,3 +31,4 @@ INCLUDE "constants/misc_constants.asm"
INCLUDE "constants/battle_anim_constants.asm"
INCLUDE "constants/menu_constants.asm"
+INCLUDE "constants/sgb_constants.asm"
diff --git a/constants/sgb_constants.asm b/constants/sgb_constants.asm
new file mode 100644
index 0000000..69fe02f
--- /dev/null
+++ b/constants/sgb_constants.asm
@@ -0,0 +1,150 @@
+; GetSGBLayout arguments (see engine/gfx/cgb_layouts.asm and engine/gfx/sgb_layouts.asm)
+ const_def
+ const SGB_BATTLE_GRAYSCALE
+ const SGB_BATTLE_COLORS
+ const SGB_POKEGEAR_PALS
+ const SGB_STATS_SCREEN_HP_PALS
+ const SGB_POKEDEX
+ const SGB_SLOT_MACHINE
+ const SGB_06
+ const SGB_GS_INTRO
+ const SGB_DIPLOMA
+ const SGB_MAPPALS
+ const SGB_PARTY_MENU
+ const SGB_EVOLUTION
+ const SGB_GS_TITLE_SCREEN
+ const SGB_0D
+ const SGB_MOVE_LIST
+ const SGB_BETA_PIKACHU_MINIGAME
+ const SGB_POKEDEX_SEARCH_OPTION
+ const SGB_BETA_POKER
+ const SGB_POKEPIC
+ const SGB_13
+ const SGB_PACKPALS
+ const SGB_TRAINER_CARD
+ const SGB_POKEDEX_UNOWN_MODE
+ const SGB_BILLS_PC
+ const SGB_UNOWN_PUZZLE
+ const SGB_GAMEFREAK_LOGO
+ const SGB_PLAYER_OR_MON_FRONTPIC_PALS
+ const SGB_TRADE_TUBE
+ const SGB_TRAINER_OR_MON_FRONTPIC_PALS
+ const SGB_MYSTERY_GIFT
+ const SGB_1E
+
+SGB_PARTY_MENU_HP_PALS EQU -4
+SGB_RAM EQU -1
+
+; PredefPals indexes (see gfx/sgb/predef.pal)
+; GetPredefPal arguments (see engine/gfx/color.asm)
+ const_def
+ const PREDEFPAL_00
+ const PREDEFPAL_PALLET
+ const PREDEFPAL_VIRIDIAN
+ const PREDEFPAL_PEWTER
+ const PREDEFPAL_CERULEAN
+ const PREDEFPAL_LAVENDER
+ const PREDEFPAL_VERMILION
+ const PREDEFPAL_CELADON
+ const PREDEFPAL_FUCHSIA
+ const PREDEFPAL_CINNABAR
+ const PREDEFPAL_SAFFRON
+ const PREDEFPAL_INDIGO
+ const PREDEFPAL_NEW_BARK
+ const PREDEFPAL_CHERRYGROVE
+ const PREDEFPAL_VIOLET
+ const PREDEFPAL_AZALEA
+ const PREDEFPAL_GOLDENROD
+ const PREDEFPAL_ECRUTEAK
+ const PREDEFPAL_OLIVINE
+ const PREDEFPAL_CIANWOOD
+ const PREDEFPAL_MAHOGANY
+ const PREDEFPAL_BLACKTHORN
+ const PREDEFPAL_LAKE_OF_RAGE
+ const PREDEFPAL_SILVER_CAVE
+ const PREDEFPAL_DUNGEONS
+ const PREDEFPAL_NITE
+ const PREDEFPAL_BLACKOUT
+ const PREDEFPAL_DIPLOMA ; RB_MEWMON
+ const PREDEFPAL_TRADE_TUBE ; RB_BLUEMON
+ const PREDEFPAL_POKEDEX ; RB_REDMON
+ const PREDEFPAL_RB_CYANMON
+ const PREDEFPAL_RB_PURPLEMON
+ const PREDEFPAL_RB_BROWNMON
+ const PREDEFPAL_RB_GREENMON
+ const PREDEFPAL_RB_PINKMON
+ const PREDEFPAL_RB_YELLOWMON
+ const PREDEFPAL_CGB_BADGE ; RB_GREYMON
+ const PREDEFPAL_BETA_SHINY_MEWMON
+ const PREDEFPAL_BETA_SHINY_BLUEMON
+ const PREDEFPAL_BETA_SHINY_REDMON
+ const PREDEFPAL_BETA_SHINY_CYANMON
+ const PREDEFPAL_BETA_SHINY_PURPLEMON
+ const PREDEFPAL_BETA_SHINY_BROWNMON
+ const PREDEFPAL_BETA_SHINY_GREENMON
+ const PREDEFPAL_BETA_SHINY_PINKMON
+ const PREDEFPAL_BETA_SHINY_YELLOWMON
+ const PREDEFPAL_PARTY_ICON ; BETA_SHINY_GREYMON
+ const PREDEFPAL_HP_GREEN
+ const PREDEFPAL_HP_YELLOW
+ const PREDEFPAL_HP_RED
+ const PREDEFPAL_POKEGEAR
+ const PREDEFPAL_BETA_LOGO_1
+ const PREDEFPAL_BETA_LOGO_2
+ const PREDEFPAL_GS_INTRO_GAMEFREAK_LOGO
+ const PREDEFPAL_GS_INTRO_SHELLDER_LAPRAS
+ const PREDEFPAL_BETA_INTRO_LAPRAS
+ const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_BG
+ const PREDEFPAL_GS_INTRO_JIGGLYPUFF_PIKACHU_OB
+ const PREDEFPAL_GS_INTRO_STARTERS_TRANSITION
+ const PREDEFPAL_BETA_INTRO_VENUSAUR
+ const PREDEFPAL_PACK ; GS_INTRO_CHARIZARD
+ const PREDEFPAL_SLOT_MACHINE_0
+ const PREDEFPAL_SLOT_MACHINE_1
+ const PREDEFPAL_SLOT_MACHINE_2
+ const PREDEFPAL_SLOT_MACHINE_3
+ const PREDEFPAL_BETA_POKER_0
+ const PREDEFPAL_BETA_POKER_1
+ const PREDEFPAL_BETA_POKER_2
+ const PREDEFPAL_BETA_POKER_3
+ const PREDEFPAL_BETA_RADIO
+ const PREDEFPAL_BETA_POKEGEAR
+ const PREDEFPAL_47
+ const PREDEFPAL_GS_TITLE_SCREEN_0
+ const PREDEFPAL_GS_TITLE_SCREEN_1
+ const PREDEFPAL_GS_TITLE_SCREEN_2
+ const PREDEFPAL_GS_TITLE_SCREEN_3
+ const PREDEFPAL_UNOWN_PUZZLE
+ const PREDEFPAL_4D
+ const PREDEFPAL_GAMEFREAK_LOGO
+
+; SGB system command codes
+; http://gbdev.gg8.se/wiki/articles/SGB_Functions#SGB_System_Command_Table
+ const_def
+ const SGB_PAL01
+ const SGB_PAL23
+ const SGB_PAL03
+ const SGB_PAL12
+ const SGB_ATTR_BLK
+ const SGB_ATTR_LIN
+ const SGB_ATTR_DIV
+ const SGB_ATTR_CHR
+ const SGB_SOUND
+ const SGB_SOU_TRN
+ const SGB_PAL_SET
+ const SGB_PAL_TRN
+ const SGB_ATRC_EN
+ const SGB_TEST_EN
+ const SGB_ICON_EN
+ const SGB_DATA_SND
+ const SGB_DATA_TRN
+ const SGB_MLT_REG
+ const SGB_JUMP
+ const SGB_CHR_TRN
+ const SGB_PCT_TRN
+ const SGB_ATTR_TRN
+ const SGB_ATTR_SET
+ const SGB_MASK_EN
+ const SGB_OBJ_TRN
+
+PALPACKET_LENGTH EQU $10
diff --git a/engine/battle_anims/bg_effects.asm b/engine/battle_anims/bg_effects.asm
index 1946c1f..6297228 100644
--- a/engine/battle_anims/bg_effects.asm
+++ b/engine/battle_anims/bg_effects.asm
@@ -2357,7 +2357,7 @@ BGEffect_CheckFlyDigStatus: ; c9042 (32:5042)
ret
BattleBGEffects_CheckSGB: ; c9059 (32:5059)
- ld a, [wcccf]
+ ld a, [wSGB]
and a
ret
diff --git a/home/tilemap.asm b/home/tilemap.asm
new file mode 100644
index 0000000..ca97f42
--- /dev/null
+++ b/home/tilemap.asm
@@ -0,0 +1,70 @@
+include "constants.asm"
+
+if DEBUG
+SECTION "Tilemap Functions", ROM0 [$360B]
+else
+SECTION "Tilemap Functions", ROM0 [$35CF]
+endc
+
+Function360b::
+ call ClearSprites
+ ld hl, wVramState
+ set 0, [hl]
+ call Function3657
+ call LoadFontExtra
+ call GetMemSGBLayout
+ jr WaitBGMap
+
+ClearBGPalettes::
+ call ClearPalettes
+WaitBGMap:: ; 00:3621
+; Tell VBlank to update BG Map
+ ld a, $1
+ ldh [hBGMapMode], a
+; Wait for it to do its magic
+ ld c, 3
+ call DelayFrames
+ ret
+
+SetPalettes:: ; 00:362b
+ ld a, %11100100
+ ldh [rBGP], a
+ ld a, %11010000
+ ldh [rOBP0], a
+ ret
+
+ClearPalettes:: ; 00:3634
+ xor a
+ ldh [rBGP], a
+ ldh [rOBP0], a
+ ldh [rOBP1], a
+ ret
+
+GetMemSGBLayout:: ; 00:363c
+ ld b, SGB_RAM
+GetSGBLayout:: ; 00:363e
+ ld a, [wSGB]
+ and a
+ ret z
+ predef_jump Function928b
+
+SetHPPal:: ; 00:3648
+ ld a, e
+ cp 27 ; 56.25%
+ ld d, $0
+ jr nc, .done
+ cp 10 ; 20.83%
+ inc d
+ jr nc, .done
+ inc d
+.done: ; 00:3655
+ ld [hl], d
+ ret
+
+Function3657:: ; 00:3657
+ call DisableLCD
+ callab Function140d9
+ call LoadFont
+ call UpdateSprites
+ call EnableLCD
+ ret
diff --git a/home/util.asm b/home/util.asm
index 8efe322..880513b 100644
--- a/home/util.asm
+++ b/home/util.asm
@@ -86,3 +86,35 @@ memcmp:: ; 3430
dec c
jr nz, .loop
ret
+
+Function3439:: ; 3439
+; Place 2x2 sprite from *de into OAM at slot a
+ ld h, HIGH(wVirtualOAM)
+ swap a
+ ld l, a
+ call .Load
+ push bc
+ ld a, $8
+ add c
+ ld c, a
+ call .Load
+ pop bc
+ ld a, $8
+ add b
+ ld b, a
+ call .Load
+ ld a, $8
+ add c
+ ld c, a
+.Load: ; 00:3455
+ ld [hl], b
+ inc hl
+ ld [hl], c
+ inc hl
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ret
diff --git a/shim.sym b/shim.sym
index dd2b1f6..594a8ba 100644
--- a/shim.sym
+++ b/shim.sym
@@ -22,13 +22,6 @@
00:23E5 FadeIn ; This is not OverworldFadeIn, but I don't know what it is
00:2C05 StartMenuCheck
00:3171 Function3171
-00:3621 WaitBGMap
-00:362B SetPalettes
-00:3634 ClearPalettes
-00:363C GetMemSGBLayout
-00:363E GetSGBLayout
-00:3648 SetHPPal
-00:3655 SetHPPal.done
00:39BA PlayCry
00:3D86 WaitSFX
00:3D87 WaitSFX.wait
@@ -108,6 +101,7 @@
05:404C CheckInteriorMap
05:405B AddIndoorSprites
05:40AA AddOutdoorSprites
+05:40D9 Function140d9
05:40FB LoadUsedSpritesGfx ; TODO: maybe there's a better name
05:43E0 Function143e0
05:457A Function1457a
diff --git a/wram.asm b/wram.asm
index 4a67465..954b80b 100644
--- a/wram.asm
+++ b/wram.asm
@@ -300,7 +300,7 @@ wDebugWarpSelection:: ; cc39
ds 6
-wSGB:: ; cc40
+wcc40:: ; cc40
db
SECTION "CC9C", WRAM0[$CC9C]
@@ -341,7 +341,7 @@ wOBP1:: db ; cccc
SECTION "CCCE", WRAM0[$CCCE]
wDisableVBlankWYUpdate:: db ; ccce
-wcccf:: db
+wSGB:: db
SECTION "CD26", WRAM0[$CD26]