diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-07 11:01:53 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2018-06-07 11:01:53 -0400 |
commit | 709ed0314d03e0a6dc1e3838875311c0f12ee46d (patch) | |
tree | 7f828794351b32d09e2ed6e4341bb2ea74db4ad6 | |
parent | e45a36ecaa0dd46594f49f52206707ed60eb2a3e (diff) |
tilemap functions
-rw-r--r-- | constants.asm | 1 | ||||
-rw-r--r-- | constants/sgb_constants.asm | 150 | ||||
-rw-r--r-- | engine/battle_anims/bg_effects.asm | 2 | ||||
-rw-r--r-- | home/tilemap.asm | 70 | ||||
-rw-r--r-- | home/util.asm | 32 | ||||
-rw-r--r-- | shim.sym | 8 | ||||
-rw-r--r-- | wram.asm | 4 |
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 @@ -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 @@ -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] |