merge w pret

This commit is contained in:
ghoulslash 2021-11-05 09:22:24 -04:00
commit eee3f5b181
304 changed files with 7956 additions and 7231 deletions

View File

@ -8,4 +8,4 @@ if [ ! -f $map_file ]; then
fi
output=$(perl $(dirname "$0")/calcrom.pl $build_name.map | sed -E ':a;N;$!ba;s/\r{0,1}\n/\\n/g')
curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`$build_name progress:\\n$output\`\`\`\"}" -H "Content-Type: application/json" -X POST "$CALCROM_DISCORD_WEBHOOK_URL"
curl -d "{\"username\": \"$CALCROM_DISCORD_WEBHOOK_USERNAME\", \"avatar_url\": \"$CALCROM_DISCORD_WEBHOOK_AVATAR_URL\", \"content\":\"\`\`\`\\n$build_name progress:\\n$output\\n\`\`\`\"}" -H "Content-Type: application/json" -X POST "$CALCROM_DISCORD_WEBHOOK_URL"

View File

@ -1792,3 +1792,9 @@
setfieldeffectargument 2, \priority
dofieldeffect FLDEFF_SPARKLE
.endm
.macro braillemsgbox text:req
braillemessage \text
waitbuttonpress
closebraillemessage
.endm

View File

@ -219,14 +219,14 @@ struct EventObjectGraphicsInfo
/*0x20*/ const union AffineAnimCmd *const *affineAnims;
};
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
#define PLAYER_AVATAR_FLAG_5 (1 << 5)
#define PLAYER_AVATAR_FLAG_6 (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
#define PLAYER_AVATAR_FLAG_ON_FOOT (1 << 0)
#define PLAYER_AVATAR_FLAG_MACH_BIKE (1 << 1)
#define PLAYER_AVATAR_FLAG_ACRO_BIKE (1 << 2)
#define PLAYER_AVATAR_FLAG_SURFING (1 << 3)
#define PLAYER_AVATAR_FLAG_UNDERWATER (1 << 4)
#define PLAYER_AVATAR_FLAG_CONTROLLABLE (1 << 5)
#define PLAYER_AVATAR_FLAG_FORCED_MOVE (1 << 6)
#define PLAYER_AVATAR_FLAG_DASH (1 << 7)
enum
{

View File

@ -414,7 +414,7 @@ HIGHLIGHT = FC 02 @ same as fc 01
SHADOW = FC 03 @ same as fc 01
COLOR_HIGHLIGHT_SHADOW = FC 04 @ takes 3 bytes
PALETTE = FC 05 @ used in credits
SIZE = FC 06 @ note that anything other than "SMALL" is invalid
FONT = FC 06 @ Given a font id, or use font constants below instead
RESET_SIZE = FC 07
PAUSE = FC 08 @ manually print the wait byte after this, havent mapped them
PAUSE_UNTIL_PRESS = FC 09
@ -434,6 +434,14 @@ ENG = FC 16
PAUSE_MUSIC = FC 17
RESUME_MUSIC = FC 18
@ fonts
FONT_SMALL = FC 06 00
FONT_NORMAL = FC 06 01
FONT_SHORT = FC 06 02
FONT_NARROW = FC 06 07
FONT_SMALL_NARROW = FC 06 08
@ colors
TRANSPARENT = 00

View File

@ -1 +1 @@
gUnknown_03006370
gEReaderData

View File

@ -735,7 +735,7 @@ AI_CheckViability:
if_effect EFFECT_PSYCH_UP, AI_CV_PsychUp
if_effect EFFECT_MIRROR_COAT, AI_CV_MirrorCoat
if_effect EFFECT_SKULL_BASH, AI_CV_ChargeUpMove
if_effect EFFECT_SOLARBEAM, AI_CV_ChargeUpMove
if_effect EFFECT_SOLAR_BEAM, AI_CV_ChargeUpMove
if_effect EFFECT_SEMI_INVULNERABLE, AI_CV_SemiInvulnerable
if_effect EFFECT_SOFTBOILED, AI_CV_Heal
if_effect EFFECT_FAKE_OUT, AI_CV_FakeOut
@ -3051,7 +3051,7 @@ AI_HPAware_DiscouragedEffectsWhenLowHP:
.byte EFFECT_BELLY_DRUM
.byte EFFECT_PSYCH_UP
.byte EFFECT_MIRROR_COAT
.byte EFFECT_SOLARBEAM
.byte EFFECT_SOLAR_BEAM
.byte EFFECT_ERUPTION
.byte EFFECT_TICKLE
.byte EFFECT_COSMIC_POWER

View File

@ -5474,45 +5474,45 @@ SolarBeamAbsorbEffect:
delay 2
return
SolarBeamUnleash:
call SetSolarbeamBg
call SetSolarBeamBg
panse SE_M_SOLAR_BEAM, SOUND_PAN_ATTACKER, SOUND_PAN_TARGET, +2, 0
createvisualtask AnimTask_CreateSmallSolarbeamOrbs, 5
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
createvisualtask AnimTask_CreateSmallSolarBeamOrbs, 5
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 0, 10, RGB(25, 31, 0)
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
createvisualtask AnimTask_ShakeMon2, 5, ANIM_TARGET, 2, 0, 65, 1
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
call SolarBeamUnleash1
call SolarBeamUnleash1
waitforvisualfinish
createvisualtask AnimTask_BlendBattleAnimPal, 10, 4, 1, 10, 0, RGB(25, 31, 0)
call UnsetSolarbeamBg
call UnsetSolarBeamBg
goto SolarBeamEnd
SolarBeamUnleash1:
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 0
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 1
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 2
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 3
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 4
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 5
delay 4
createsprite gSolarbeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
createsprite gSolarBeamBigOrbSpriteTemplate, ANIM_TARGET, 3, 15, 0, 20, 6
delay 4
return
@ -10189,26 +10189,26 @@ UnsetSkyBg:
waitbgfadein
return
SetSolarbeamBg:
SetSolarBeamBg:
createvisualtask AnimTask_IsContest, 2
jumprettrue SetSolarbeamBgContest
jumprettrue SetSolarBeamBgContest
createvisualtask AnimTask_IsTargetPlayerSide, 2
jumpretfalse SetSolarbeamBgOpponent
goto SetSolarbeamBgPlayer
SetSolarbeamBgContinue:
jumpretfalse SetSolarBeamBgOpponent
goto SetSolarBeamBgPlayer
SetSolarBeamBgContinue:
waitbgfadein
return
SetSolarbeamBgContest:
fadetobg BG_SOLARBEAM_CONTESTS
goto SetSolarbeamBgContinue
SetSolarbeamBgPlayer:
fadetobg BG_SOLARBEAM_PLAYER
goto SetSolarbeamBgContinue
SetSolarbeamBgOpponent:
fadetobg BG_SOLARBEAM_OPPONENT
goto SetSolarbeamBgContinue
SetSolarBeamBgContest:
fadetobg BG_SOLAR_BEAM_CONTESTS
goto SetSolarBeamBgContinue
SetSolarBeamBgPlayer:
fadetobg BG_SOLAR_BEAM_PLAYER
goto SetSolarBeamBgContinue
SetSolarBeamBgOpponent:
fadetobg BG_SOLAR_BEAM_OPPONENT
goto SetSolarBeamBgContinue
UnsetSolarbeamBg:
UnsetSolarBeamBg:
restorebg
waitbgfadein
return

View File

@ -168,7 +168,7 @@ gBattleScriptsForMoveEffects::
.4byte BattleScript_EffectFutureSight @ EFFECT_FUTURE_SIGHT
.4byte BattleScript_EffectGust @ EFFECT_GUST
.4byte BattleScript_EffectStomp @ EFFECT_FLINCH_MINIMIZE_HIT
.4byte BattleScript_EffectSolarbeam @ EFFECT_SOLARBEAM
.4byte BattleScript_EffectSolarBeam @ EFFECT_SOLAR_BEAM
.4byte BattleScript_EffectThunder @ EFFECT_THUNDER
.4byte BattleScript_EffectTeleport @ EFFECT_TELEPORT
.4byte BattleScript_EffectBeatUp @ EFFECT_BEAT_UP
@ -1898,17 +1898,17 @@ BattleScript_EffectStomp::
setbyte sDMG_MULTIPLIER, 2
goto BattleScript_FlinchEffect
BattleScript_EffectSolarbeam::
jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarbeamDecideTurn
jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarbeamDecideTurn
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN, BattleScript_SolarbeamOnFirstTurn
BattleScript_SolarbeamDecideTurn::
BattleScript_EffectSolarBeam::
jumpifabilitypresent ABILITY_CLOUD_NINE, BattleScript_SolarBeamDecideTurn
jumpifabilitypresent ABILITY_AIR_LOCK, BattleScript_SolarBeamDecideTurn
jumpifhalfword CMP_COMMON_BITS, gBattleWeather, B_WEATHER_SUN, BattleScript_SolarBeamOnFirstTurn
BattleScript_SolarBeamDecideTurn::
jumpifstatus2 BS_ATTACKER, STATUS2_MULTIPLETURNS, BattleScript_TwoTurnMovesSecondTurn
jumpifword CMP_COMMON_BITS, gHitMarker, HITMARKER_NO_ATTACKSTRING, BattleScript_TwoTurnMovesSecondTurn
setbyte sTWOTURN_STRINGID, B_MSG_TURN1_SOLAR_BEAM
call BattleScriptFirstChargingTurn
goto BattleScript_MoveEnd
BattleScript_SolarbeamOnFirstTurn::
BattleScript_SolarBeamOnFirstTurn::
orword gHitMarker, HITMARKER_CHARGING
setmoveeffect MOVE_EFFECT_CHARGING | MOVE_EFFECT_AFFECTS_USER
seteffectprimary

6
data/ereader_link_data.s Normal file
View File

@ -0,0 +1,6 @@
.section .rodata
.align 2
gEReaderLinkData_Start::
.incbin "data/ereader_link_data.bin"
gEReaderLinkData_End::

View File

@ -1026,7 +1026,7 @@ Common_EventScript_LegendaryFlewAway::
.include "data/scripts/mauville_man.inc"
.include "data/scripts/field_move_scripts.inc"
.include "data/scripts/item_ball_scripts.inc"
.include "data/scripts/mystery_event_club.inc"
.include "data/scripts/profile_man.inc"
.include "data/scripts/day_care.inc"
.include "data/scripts/flash.inc"
.include "data/scripts/players_house.inc"

View File

@ -50,7 +50,7 @@ gFieldEffectScriptPointers::
.4byte gFieldEffectScript_HotSpringsWater @ FLDEFF_HOT_SPRINGS_WATER
.4byte gFieldEffectScript_UseWaterfall @ FLDEFF_USE_WATERFALL
.4byte gFieldEffectScript_UseDive @ FLDEFF_USE_DIVE
.4byte gFieldEffectScript_Pokeball @ FLDEFF_POKEBALL
.4byte gFieldEffectScript_PokeballTrail @ FLDEFF_POKEBALL_TRAIL
.4byte gFieldEffectScript_HeartIcon @ FLDEFF_HEART_ICON
.4byte gFieldEffectScript_Nop47 @ FLDEFF_NOP_47
.4byte gFieldEffectScript_Nop48 @ FLDEFF_NOP_48
@ -255,9 +255,9 @@ gFieldEffectScript_UseDive::
field_eff_callnative FldEff_UseDive
field_eff_end
gFieldEffectScript_Pokeball::
gFieldEffectScript_PokeballTrail::
field_eff_loadpal gSpritePalette_Pokeball
field_eff_callnative FldEff_Pokeball
field_eff_callnative FldEff_PokeballTrail
field_eff_end
gFieldEffectScript_HeartIcon::

View File

@ -1,76 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gFont8LatinGlyphs::
.incbin "graphics/fonts/font8.latfont"
.align 2
gFont8LatinGlyphWidths::
.include "graphics/fonts/font8_latin_widths.inc"
.align 2
gFont0LatinGlyphs::
.incbin "graphics/fonts/font0.latfont"
.align 2
gFont0LatinGlyphWidths::
.include "graphics/fonts/font0_latin_widths.inc"
.align 2
gFont7LatinGlyphs::
.incbin "graphics/fonts/font7.latfont"
.align 2
gFont7LatinGlyphWidths::
.include "graphics/fonts/font7_latin_widths.inc"
.align 2
gFont2LatinGlyphs::
.incbin "graphics/fonts/font2.latfont"
.align 2
gFont2LatinGlyphWidths::
.include "graphics/fonts/font2_latin_widths.inc"
.align 2
gFont1LatinGlyphs::
.incbin "graphics/fonts/font1.latfont"
.align 2
gFont1LatinGlyphWidths::
.include "graphics/fonts/font1_latin_widths.inc"
.align 2
gFont0JapaneseGlyphs::
.incbin "graphics/fonts/font0.hwjpnfont"
.align 2
gFont1JapaneseGlyphs::
.incbin "graphics/fonts/font1.hwjpnfont"
.align 2
gUnusedJapaneseFireRedLeafGreenMaleFontGlyphs::
.incbin "graphics/fonts/unused_frlg_male.fwjpnfont"
.align 2
gUnusedJapaneseFireRedLeafGreenMaleFontGlyphWidths::
.include "graphics/fonts/unused_japanese_frlg_male_font_widths.inc"
.align 2
gUnusedJapaneseFireRedLeafGreenFemaleFontGlyphs::
.incbin "graphics/fonts/unused_frlg_female.fwjpnfont"
.align 2
gUnusedJapaneseFireRedLeafGreenFemaleFontGlyphWidths::
.include "graphics/fonts/unused_japanese_frlg_female_font_widths.inc"
.align 2
gFont2JapaneseGlyphs::
.incbin "graphics/fonts/font2.fwjpnfont"
.align 2
gFont2JapaneseGlyphWidths::
.include "graphics/fonts/font2_japanese_widths.inc"

View File

@ -40,9 +40,7 @@ AncientTomb_EventScript_HideRegiEntrance::
AncientTomb_EventScript_CaveEntranceMiddle::
lockall
goto_if_set FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED, AncientTomb_EventScript_BigHoleInWall
braillemessage AncientTomb_Braille_ShineInTheMiddle
waitbuttonpress
closebraillemessage
braillemsgbox AncientTomb_Braille_ShineInTheMiddle
releaseall
end
@ -53,9 +51,7 @@ AncientTomb_EventScript_BigHoleInWall::
AncientTomb_EventScript_CaveEntranceSide::
lockall
braillemessage AncientTomb_Braille_ShineInTheMiddle
waitbuttonpress
closebraillemessage
braillemsgbox AncientTomb_Braille_ShineInTheMiddle
releaseall
end

View File

@ -3,61 +3,61 @@ BattleFrontier_RankingHall_MapScripts::
BattleFrontier_RankingHall_EventScript_TowerSinglesRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_SINGLES
setvar VAR_0x8005, RANKING_HALL_TOWER_SINGLES
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerDoublesRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_DOUBLES
setvar VAR_0x8005, RANKING_HALL_TOWER_DOUBLES
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerMultisRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_MULTIS
setvar VAR_0x8005, RANKING_HALL_TOWER_MULTIS
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_TowerLinkRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_TOWER_LINK
setvar VAR_0x8005, RANKING_HALL_TOWER_LINK
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_ArenaRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_ARENA
setvar VAR_0x8005, RANKING_HALL_ARENA
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PalaceRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_PALACE
setvar VAR_0x8005, RANKING_HALL_PALACE
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_FactoryRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_FACTORY
setvar VAR_0x8005, RANKING_HALL_FACTORY
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_DomeRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_DOME
setvar VAR_0x8005, RANKING_HALL_DOME
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PikeRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_PIKE
setvar VAR_0x8005, RANKING_HALL_PIKE
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end
BattleFrontier_RankingHall_EventScript_PyramidRecords::
lockall
setvar VAR_0x8005, RANKING_HALL_BATTLE_PYRAMID
setvar VAR_0x8005, RANKING_HALL_PYRAMID
goto BattleFrontier_RankingHall_EventScript_ShowRecords
end

View File

@ -40,9 +40,7 @@ DesertRuins_EventScript_ShowRegirock::
DesertRuins_EventScript_CaveEntranceMiddle::
lockall
goto_if_set FLAG_SYS_REGIROCK_PUZZLE_COMPLETED, DesertRuins_EventScript_BigHoleInWall
braillemessage DesertRuins_Braille_UseRockSmash
waitbuttonpress
closebraillemessage
braillemsgbox DesertRuins_Braille_UseRockSmash
releaseall
end
@ -53,9 +51,7 @@ DesertRuins_EventScript_BigHoleInWall::
DesertRuins_EventScript_CaveEntranceSide::
lockall
braillemessage DesertRuins_Braille_UseRockSmash
waitbuttonpress
closebraillemessage
braillemsgbox DesertRuins_Braille_UseRockSmash
releaseall
end

View File

@ -37,7 +37,7 @@
"movement_range_y": 0,
"trainer_type": "TRAINER_TYPE_NONE",
"trainer_sight_or_berry_tree_id": "0",
"script": "MysteryEventClub_EventScript_Man",
"script": "ProfileMan_EventScript_Man",
"flag": "0"
},
{

View File

@ -3,27 +3,25 @@ SealedChamber_InnerRoom_MapScripts::
SealedChamber_InnerRoom_EventScript_BrailleBackWall::
lockall
braillemessage SealedChamber_InnerRoom_Braille_FirstWailordLastRelicanth
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_FirstWailordLastRelicanth
goto_if_set FLAG_REGI_DOORS_OPENED, SealedChamber_InnerRoom_EventScript_NoEffect
specialvar VAR_RESULT, CheckRelicanthWailord
compare VAR_RESULT, FALSE
goto_if_eq SealedChamber_InnerRoom_EventScript_NoEffect
fadeoutbgm 0
playse SE_TRUCK_MOVE
special DoSealedChamberShakingEffect1
special DoSealedChamberShakingEffect_Long
waitstate
delay 40
special DoSealedChamberShakingEffect2
special DoSealedChamberShakingEffect_Short
waitstate
playse SE_DOOR
delay 40
special DoSealedChamberShakingEffect2
special DoSealedChamberShakingEffect_Short
waitstate
playse SE_DOOR
delay 40
special DoSealedChamberShakingEffect2
special DoSealedChamberShakingEffect_Short
waitstate
playse SE_DOOR
delay 40
@ -40,49 +38,37 @@ SealedChamber_InnerRoom_EventScript_NoEffect::
SealedChamber_InnerRoom_EventScript_BrailleStoryPart1::
lockall
braillemessage SealedChamber_InnerRoom_Braille_InThisCaveWeHaveLived
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_InThisCaveWeHaveLived
releaseall
end
SealedChamber_InnerRoom_EventScript_BrailleStoryPart2::
lockall
braillemessage SealedChamber_InnerRoom_Braille_WeOweAllToThePokemon
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_WeOweAllToThePokemon
releaseall
end
SealedChamber_InnerRoom_EventScript_BrailleStoryPart3::
lockall
braillemessage SealedChamber_InnerRoom_Braille_ButWeSealedThePokemonAway
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_ButWeSealedThePokemonAway
releaseall
end
SealedChamber_InnerRoom_EventScript_BrailleStoryPart4::
lockall
braillemessage SealedChamber_InnerRoom_Braille_WeFearedIt
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_WeFearedIt
releaseall
end
SealedChamber_InnerRoom_EventScript_BrailleStoryPart5::
lockall
braillemessage SealedChamber_InnerRoom_Braille_ThoseWithCourageHope
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_ThoseWithCourageHope
releaseall
end
SealedChamber_InnerRoom_EventScript_BrailleStoryPart6::
lockall
braillemessage SealedChamber_InnerRoom_Braille_OpenDoorEternalPokemonWaits
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_InnerRoom_Braille_OpenDoorEternalPokemonWaits
releaseall
end

View File

@ -28,90 +28,68 @@ SealedChamber_OuterRoom_EventScript_CloseInnerRoomEntrance::
SealedChamber_OuterRoom_EventScript_BrailleABC::
lockall
braillemessage SealedChamber_OuterRoom_Braille_ABC
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_ABC
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleGHI::
lockall
braillemessage SealedChamber_OuterRoom_Braille_GHI
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_GHI
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleMNO::
lockall
braillemessage SealedChamber_OuterRoom_Braille_MNO
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_MNO
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleTUV::
lockall
braillemessage SealedChamber_OuterRoom_Braille_TUV
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_TUV
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleDEF::
lockall
braillemessage SealedChamber_OuterRoom_Braille_DEF
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_DEF
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleJKL::
lockall
braillemessage SealedChamber_OuterRoom_Braille_JKL
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_JKL
releaseall
end
SealedChamber_OuterRoom_EventScript_BraillePQRS::
lockall
braillemessage SealedChamber_OuterRoom_Braille_PQRS
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_PQRS
releaseall
end
SealedChamber_OuterRoom_EventScript_BraillePeriod::
lockall
braillemessage SealedChamber_OuterRoom_Braille_Period
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_Period
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleWXYZ::
lockall
braillemessage SealedChamber_OuterRoom_Braille_WXYZ
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_WXYZ
releaseall
end
SealedChamber_OuterRoom_EventScript_BrailleComma::
lockall
braillemessage SealedChamber_OuterRoom_Braille_Comma
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_Comma
releaseall
end
SealedChamber_OuterRoom_EventScript_InnerRoomEntranceWall::
lockall
goto_if_set FLAG_SYS_BRAILLE_DIG, SealedChamber_OuterRoom_EventScript_HoleInWall
braillemessage SealedChamber_OuterRoom_Braille_DigHere
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_DigHere
releaseall
end
@ -122,9 +100,7 @@ SealedChamber_OuterRoom_EventScript_HoleInWall::
SealedChamber_OuterRoom_EventScript_BrailleDigHere::
lockall
braillemessage SealedChamber_OuterRoom_Braille_DigHere
waitbuttonpress
closebraillemessage
braillemsgbox SealedChamber_OuterRoom_Braille_DigHere
releaseall
end

View File

@ -20,9 +20,7 @@ Underwater_SealedChamber_EventScript_SurfaceSealedChamber::
Underwater_SealedChamber_EventScript_Braille::
lockall
braillemessage Underwater_SealedChamber_Braille_GoUpHere
waitbuttonpress
closebraillemessage
braillemsgbox Underwater_SealedChamber_Braille_GoUpHere
releaseall
end

View File

@ -1,170 +0,0 @@
MysteryEventClub_EventScript_Man::
lock
faceplayer
goto_if_set FLAG_SYS_CHAT_USED, MysteryEventClub_EventScript_GivenProfileBefore
msgbox MysteryEventClub_Text_CollectTrainerProfiles, MSGBOX_DEFAULT
goto MysteryEventClub_EventScript_AskToSeeProfile
end
MysteryEventClub_EventScript_AskToSeeProfile::
msgbox MysteryEventClub_Text_MayISeeYourProfile, MSGBOX_DEFAULT
multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
switch VAR_RESULT
case 0, MysteryEventClub_EventScript_CreateProfile
case 1, MysteryEventClub_EventScript_DeclineShowProfile
case 2, MysteryEventClub_EventScript_Info
case MULTI_B_PRESSED, MysteryEventClub_EventScript_DeclineShowProfile
end
MysteryEventClub_EventScript_Info::
msgbox MysteryEventClub_Text_EasyChatExplanation, MSGBOX_DEFAULT
goto MysteryEventClub_EventScript_AskToSeeProfile
end
MysteryEventClub_EventScript_CreateProfile::
msgbox MysteryEventClub_Text_LetsSeeItThen, MSGBOX_DEFAULT
closemessage
setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
call Common_ShowEasyChatScreen
lock
faceplayer
compare VAR_RESULT, 0
goto_if_eq MysteryEventClub_EventScript_CancelShowProfile
compare VAR_RESULT, 1
goto_if_eq MysteryEventClub_EventScript_ShowProfile
end
MysteryEventClub_EventScript_CancelShowProfile::
msgbox MysteryEventClub_Text_NotIntoItRightNow, MSGBOX_DEFAULT
release
end
MysteryEventClub_EventScript_ShowProfile::
setvar VAR_0x8004, 0
special ShowEasyChatProfile
waitmessage
delay 80
msgbox MysteryEventClub_Text_FantasticProfile, MSGBOX_DEFAULT
release
end
MysteryEventClub_EventScript_DeclineShowProfile::
msgbox MysteryEventClub_Text_ImagineYouWouldHaveWonderfulProfile, MSGBOX_DEFAULT
release
end
MysteryEventClub_EventScript_GivenProfileBefore::
msgbox MysteryEventClub_Text_YouHaveWonderfulSmile, MSGBOX_DEFAULT
goto MysteryEventClub_EventScript_AskToSeeNewProfile
end
MysteryEventClub_EventScript_AskToSeeNewProfile::
msgbox MysteryEventClub_Text_MayISeeYourNewProfile, MSGBOX_DEFAULT
multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
switch VAR_RESULT
case 0, MysteryEventClub_EventScript_CreateNewProfile
case 1, MysteryEventClub_EventScript_DeclineNewProfile
case 2, MysteryEventClub_EventScript_InfoNewProfile
case MULTI_B_PRESSED, MysteryEventClub_EventScript_DeclineNewProfile
end
MysteryEventClub_EventScript_InfoNewProfile::
msgbox MysteryEventClub_Text_EasyChatExplanation, MSGBOX_DEFAULT
goto MysteryEventClub_EventScript_AskToSeeNewProfile
end
MysteryEventClub_EventScript_CreateNewProfile::
msgbox MysteryEventClub_Text_EvenBetterThanLastProfile, MSGBOX_DEFAULT
closemessage
setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
call Common_ShowEasyChatScreen
lock
faceplayer
compare VAR_RESULT, 0
goto_if_eq MysteryEventClub_EventScript_CancelShowProfile
compare VAR_RESULT, 1
goto_if_eq MysteryEventClub_EventScript_ShowProfile
end
MysteryEventClub_EventScript_DeclineNewProfile::
msgbox MysteryEventClub_Text_LikeProfileWayItIs, MSGBOX_DEFAULT
release
end
@ Unused
MysteryEventClub_EventScript_Ret::
return
MysteryEventClub_Text_CollectTrainerProfiles:
.string "Hello there, TRAINER!\n"
.string "You've got a wonderful smile, there.\p"
.string "I have a hobby--collecting the profiles\n"
.string "of POKéMON TRAINERS.$"
MysteryEventClub_Text_MayISeeYourProfile:
.string "So, how about it?\n"
.string "May I see your profile?$"
MysteryEventClub_Text_EasyChatExplanation:
.string "You make your own profile by putting\n"
.string "together four words or phrases.\p"
.string "Here, I'll show you an example of a\n"
.string "profile using four pieces of text.\p"
.string "You can switch those four pieces with\n"
.string "other text pieces any which way you\l"
.string "like to make your own profile.\p"
.string "There are a lot of text pieces that\n"
.string "you can use.\p"
.string "They are arranged in groups like\n"
.string "POKéMON, lifestyles, and hobbies so\l"
.string "it is easier to look them up.\p"
.string "So, first, choose the group of text\n"
.string "pieces to display a list of choices.\p"
.string "Then, pick the choice you want.\p"
.string "Repeat for the remaining text choices,\n"
.string "and you'll have your very own profile.$"
MysteryEventClub_Text_LetsSeeItThen:
.string "Yes! Thank you!\n"
.string "So, let's see it, then.$"
MysteryEventClub_Text_ImagineYouWouldHaveWonderfulProfile:
.string "Oh, no, really?\p"
.string "I imagine someone like you would have\n"
.string "a wonderful profile…$"
MysteryEventClub_Text_NotIntoItRightNow:
.string "Oh? You're not into it right now?\p"
.string "Well, anytime is good by me!$"
MysteryEventClub_Text_YouHaveWonderfulSmile:
.string "Hello there, TRAINER!\n"
.string "You've got a wonderful smile.$"
MysteryEventClub_Text_MayISeeYourNewProfile:
.string "May I see your new profile?$"
MysteryEventClub_Text_EvenBetterThanLastProfile:
.string "Yes! Thank you!\p"
.string "I hope it's even better than the profile\n"
.string "you showed me before.$"
MysteryEventClub_Text_LikeProfileWayItIs:
.string "Oh, you like your profile the way it is.\p"
.string "I don't blame you--it's a wonderful\n"
.string "profile the way it is now.$"
MysteryEventClub_Text_FantasticProfile:
.string "F-fantastic!\p"
.string "Your profile, it's wonderful!\n"
.string "It really says what you're about.\p"
.string "Why, anyone hearing this profile would\n"
.string "be captivated by you!\p"
.string "Thank you!$"
@ Unused
MysteryEventClub_Text_YouKnowSecretSaying:
.string "Oh?\n"
.string "You know the secret saying!\p"
.string "That means you're now a fellow member\n"
.string "of the MYSTERY EVENT CLUB!$"

View File

@ -0,0 +1,170 @@
ProfileMan_EventScript_Man::
lock
faceplayer
goto_if_set FLAG_SYS_CHAT_USED, ProfileMan_EventScript_GivenProfileBefore
msgbox ProfileMan_Text_CollectTrainerProfiles, MSGBOX_DEFAULT
goto ProfileMan_EventScript_AskToSeeProfile
end
ProfileMan_EventScript_AskToSeeProfile::
msgbox ProfileMan_Text_MayISeeYourProfile, MSGBOX_DEFAULT
multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
switch VAR_RESULT
case 0, ProfileMan_EventScript_CreateProfile
case 1, ProfileMan_EventScript_DeclineShowProfile
case 2, ProfileMan_EventScript_Info
case MULTI_B_PRESSED, ProfileMan_EventScript_DeclineShowProfile
end
ProfileMan_EventScript_Info::
msgbox ProfileMan_Text_EasyChatExplanation, MSGBOX_DEFAULT
goto ProfileMan_EventScript_AskToSeeProfile
end
ProfileMan_EventScript_CreateProfile::
msgbox ProfileMan_Text_LetsSeeItThen, MSGBOX_DEFAULT
closemessage
setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
call Common_ShowEasyChatScreen
lock
faceplayer
compare VAR_RESULT, 0
goto_if_eq ProfileMan_EventScript_CancelShowProfile
compare VAR_RESULT, 1
goto_if_eq ProfileMan_EventScript_ShowProfile
end
ProfileMan_EventScript_CancelShowProfile::
msgbox ProfileMan_Text_NotIntoItRightNow, MSGBOX_DEFAULT
release
end
ProfileMan_EventScript_ShowProfile::
setvar VAR_0x8004, 0
special ShowEasyChatProfile
waitmessage
delay 80
msgbox ProfileMan_Text_FantasticProfile, MSGBOX_DEFAULT
release
end
ProfileMan_EventScript_DeclineShowProfile::
msgbox ProfileMan_Text_ImagineYouWouldHaveWonderfulProfile, MSGBOX_DEFAULT
release
end
ProfileMan_EventScript_GivenProfileBefore::
msgbox ProfileMan_Text_YouHaveWonderfulSmile, MSGBOX_DEFAULT
goto ProfileMan_EventScript_AskToSeeNewProfile
end
ProfileMan_EventScript_AskToSeeNewProfile::
msgbox ProfileMan_Text_MayISeeYourNewProfile, MSGBOX_DEFAULT
multichoice 17, 6, MULTI_YESNOINFO_2, FALSE
switch VAR_RESULT
case 0, ProfileMan_EventScript_CreateNewProfile
case 1, ProfileMan_EventScript_DeclineNewProfile
case 2, ProfileMan_EventScript_InfoNewProfile
case MULTI_B_PRESSED, ProfileMan_EventScript_DeclineNewProfile
end
ProfileMan_EventScript_InfoNewProfile::
msgbox ProfileMan_Text_EasyChatExplanation, MSGBOX_DEFAULT
goto ProfileMan_EventScript_AskToSeeNewProfile
end
ProfileMan_EventScript_CreateNewProfile::
msgbox ProfileMan_Text_EvenBetterThanLastProfile, MSGBOX_DEFAULT
closemessage
setvar VAR_0x8004, EASY_CHAT_TYPE_PROFILE
call Common_ShowEasyChatScreen
lock
faceplayer
compare VAR_RESULT, 0
goto_if_eq ProfileMan_EventScript_CancelShowProfile
compare VAR_RESULT, 1
goto_if_eq ProfileMan_EventScript_ShowProfile
end
ProfileMan_EventScript_DeclineNewProfile::
msgbox ProfileMan_Text_LikeProfileWayItIs, MSGBOX_DEFAULT
release
end
@ Unused
ProfileMan_EventScript_Ret::
return
ProfileMan_Text_CollectTrainerProfiles:
.string "Hello there, TRAINER!\n"
.string "You've got a wonderful smile, there.\p"
.string "I have a hobby--collecting the profiles\n"
.string "of POKéMON TRAINERS.$"
ProfileMan_Text_MayISeeYourProfile:
.string "So, how about it?\n"
.string "May I see your profile?$"
ProfileMan_Text_EasyChatExplanation:
.string "You make your own profile by putting\n"
.string "together four words or phrases.\p"
.string "Here, I'll show you an example of a\n"
.string "profile using four pieces of text.\p"
.string "You can switch those four pieces with\n"
.string "other text pieces any which way you\l"
.string "like to make your own profile.\p"
.string "There are a lot of text pieces that\n"
.string "you can use.\p"
.string "They are arranged in groups like\n"
.string "POKéMON, lifestyles, and hobbies so\l"
.string "it is easier to look them up.\p"
.string "So, first, choose the group of text\n"
.string "pieces to display a list of choices.\p"
.string "Then, pick the choice you want.\p"
.string "Repeat for the remaining text choices,\n"
.string "and you'll have your very own profile.$"
ProfileMan_Text_LetsSeeItThen:
.string "Yes! Thank you!\n"
.string "So, let's see it, then.$"
ProfileMan_Text_ImagineYouWouldHaveWonderfulProfile:
.string "Oh, no, really?\p"
.string "I imagine someone like you would have\n"
.string "a wonderful profile…$"
ProfileMan_Text_NotIntoItRightNow:
.string "Oh? You're not into it right now?\p"
.string "Well, anytime is good by me!$"
ProfileMan_Text_YouHaveWonderfulSmile:
.string "Hello there, TRAINER!\n"
.string "You've got a wonderful smile.$"
ProfileMan_Text_MayISeeYourNewProfile:
.string "May I see your new profile?$"
ProfileMan_Text_EvenBetterThanLastProfile:
.string "Yes! Thank you!\p"
.string "I hope it's even better than the profile\n"
.string "you showed me before.$"
ProfileMan_Text_LikeProfileWayItIs:
.string "Oh, you like your profile the way it is.\p"
.string "I don't blame you--it's a wonderful\n"
.string "profile the way it is now.$"
ProfileMan_Text_FantasticProfile:
.string "F-fantastic!\p"
.string "Your profile, it's wonderful!\n"
.string "It really says what you're about.\p"
.string "Why, anyone hearing this profile would\n"
.string "be captivated by you!\p"
.string "Thank you!$"
@ Unused
ProfileMan_Text_YouKnowSecretSaying:
.string "Oh?\n"
.string "You know the secret saying!\p"
.string "That means you're now a fellow member\n"
.string "of the MYSTERY EVENT CLUB!$"

View File

@ -315,7 +315,7 @@ gSpecials::
def_special IsStarterInParty
def_special CopyCurSecretBaseOwnerName_StrVar1
def_special ScriptCheckFreePokemonStorageSpace
def_special DoSealedChamberShakingEffect1
def_special DoSealedChamberShakingEffect_Long
def_special ShowDeptStoreElevatorFloorSelect
def_special InteractWithShieldOrTVDecoration
def_special IsPokerusInParty
@ -325,7 +325,7 @@ gSpecials::
def_special BattleSetup_StartLegendaryBattle
def_special StartRegiBattle
def_special SetTrainerFacingDirection
def_special DoSealedChamberShakingEffect2
def_special DoSealedChamberShakingEffect_Short
def_special FoundBlackGlasses
def_special StartDroughtWeatherBlend
def_special DoDiveWarp

View File

@ -1,3 +1,7 @@
@ NOTE: The brailleformat macro in this file is leftover from RS.
@ The numbers are simply skipped over. If you'd like to omit
@ this macro you must also stop it from skipping over this
@ section by editing ScrCmd_braillemessage.
Underwater_SealedChamber_Braille_GoUpHere:
brailleformat 4, 6, 26, 13, 7, 9
.braille "GO UP HERE.$"

View File

@ -1,5 +0,0 @@
.section .rodata
.align 2
gUnknown_089A3470::
.incbin "data/unknown_serial_data.bin"

View File

@ -950,7 +950,7 @@ void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
}
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset)
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2)
{
u16 screenWidth, screenHeight, screenSize;
u16 var;
@ -966,28 +966,28 @@ void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8
{
case BG_TYPE_NORMAL:
srcPtr = src + ((srcY * srcWidth) + srcX) * 2;
for (i = destX; i < (destX + rectWidth); i++)
for (i = destY; i < (destY + rectHeight); i++)
{
for (j = srcHeight; j < (srcHeight + destY); j++)
for (j = destX; j < (destX + rectWidth); j++)
{
u16 index = GetTileMapIndexFromCoords(j, i, screenSize, screenWidth, screenHeight);
CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), rectHeight, palette1, tileOffset);
CopyTileMapEntry(srcPtr, sGpuBgConfigs2[bg].tilemap + (index * 2), palette1, tileOffset, palette2);
srcPtr += 2;
}
srcPtr += (srcWidth - destY) * 2;
srcPtr += (srcWidth - rectWidth) * 2;
}
break;
case BG_TYPE_AFFINE:
srcPtr = src + ((srcY * srcWidth) + srcX);
var = GetBgMetricAffineMode(bg, 0x1);
for (i = destX; i < (destX + rectWidth); i++)
for (i = destY; i < (destY + rectHeight); i++)
{
for (j = srcHeight; j < (srcHeight + destY); j++)
for (j = destX; j < (destX + rectWidth); j++)
{
*(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + palette1;
*(u8*)(sGpuBgConfigs2[bg].tilemap + ((var * i) + j)) = *(u8*)(srcPtr) + tileOffset;
srcPtr++;
}
srcPtr += (srcWidth - destY);
srcPtr += (srcWidth - rectWidth);
}
break;
}

View File

@ -72,7 +72,7 @@ void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 unused, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, s16 palette1, s16 tileOffset);
void CopyRectToBgTilemapBufferRect(u8 bg, const void *src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, s16 tileOffset, s16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);

339
gflib/characters.h Normal file
View File

@ -0,0 +1,339 @@
#ifndef GUARD_CHARACTERS_H
#define GUARD_CHARACTERS_H
#define CHAR_SPACE 0x00
#define CHAR_A_GRAVE 0x01
#define CHAR_A_ACUTE 0x02
#define CHAR_A_CIRCUMFLEX 0x03
#define CHAR_C_CEDILLA 0x04
#define CHAR_E_GRAVE 0x05
#define CHAR_E_ACUTE 0x06
#define CHAR_E_CIRCUMFLEX 0x07
#define CHAR_E_DIAERESIS 0x08
#define CHAR_I_GRAVE 0x09
//#define CHAR_I_ACUTE 0x0A // Is 0x5A instead
#define CHAR_I_CIRCUMFLEX 0x0B
#define CHAR_I_DIAERESIS 0x0C
#define CHAR_O_GRAVE 0x0D
#define CHAR_O_ACUTE 0x0E
#define CHAR_O_CIRCUMFLEX 0x0F
#define CHAR_OE 0x10
#define CHAR_U_GRAVE 0x11
#define CHAR_U_ACUTE 0x12
#define CHAR_U_CIRCUMFLEX 0x13
#define CHAR_N_TILDE 0x14
#define CHAR_ESZETT 0x15
#define CHAR_a_GRAVE 0x16
#define CHAR_a_ACUTE 0x17
//#define CHAR_a_CIRCUMFLEX 0x18 // Is 0x68 instead
#define CHAR_c_CEDILLA 0x19
#define CHAR_e_GRAVE 0x1A
#define CHAR_e_ACUTE 0x1B
#define CHAR_e_CIRCUMFLEX 0x1C
#define CHAR_e_DIAERESIS 0x1D
#define CHAR_i_GRAVE 0x1E
//#define CHAR_i_ACUTE 0x1F // Is 0x6F instead
#define CHAR_i_CIRCUMFLEX 0x20
#define CHAR_i_DIAERESIS 0x21
#define CHAR_o_GRAVE 0x22
#define CHAR_o_ACUTE 0x23
#define CHAR_o_CIRCUMFLEX 0x24
#define CHAR_oe 0x25
#define CHAR_u_GRAVE 0x26
#define CHAR_u_ACUTE 0x27
#define CHAR_u_CIRCUMFLEX 0x28
#define CHAR_n_TILDE 0x29
#define CHAR_MASCULINE_ORDINAL 0x2A
#define CHAR_FEMININE_ORDINAL 0x2B
#define CHAR_SUPER_ER 0x2C
#define CHAR_AMPERSAND 0x2D
#define CHAR_PLUS 0x2E
//
#define CHAR_LV 0x34
#define CHAR_EQUALS 0x35
#define CHAR_SEMICOLON 0x36
#define CHAR_BARD_WORD_DELIMIT 0x37 // Empty space to separate words in Bard's song
#define CHAR_INV_QUESTION_MARK 0x51
#define CHAR_INV_EXCL_MARK 0x52
#define CHAR_PK 0x53
#define CHAR_MN 0x54
#define CHAR_PO 0x55
#define CHAR_KE 0x56
#define CHAR_BLOCK_1 0x57 // Each of these 3
#define CHAR_BLOCK_2 0x58 // chars contains 1/3
#define CHAR_BLOCK_3 0x59 // of the word BLOCK
#define CHAR_I_ACUTE 0x5A
#define CHAR_PERCENT 0x5B
#define CHAR_LEFT_PAREN 0x5C
#define CHAR_RIGHT_PAREN 0x5D
//
#define CHAR_a_CIRCUMFLEX 0x68
//
#define CHAR_i_ACUTE 0x6F
//
#define CHAR_SPACER 0x77 // Empty space
//
#define CHAR_UP_ARROW 0x79
#define CHAR_DOWN_ARROW 0x7A
#define CHAR_LEFT_ARROW 0x7B
#define CHAR_RIGHT_ARROW 0x7C
//
#define CHAR_SUPER_E 0x84
#define CHAR_LESS_THAN 0x85
#define CHAR_GREATER_THAN 0x86
//
#define CHAR_SUPER_RE 0xA0
#define CHAR_0 0xA1
#define CHAR_1 0xA2
#define CHAR_2 0xA3
#define CHAR_3 0xA4
#define CHAR_4 0xA5
#define CHAR_5 0xA6
#define CHAR_6 0xA7
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_BULLET 0xAF
#define CHAR_ELLIPSIS 0xB0
#define CHAR_DBL_QUOTE_LEFT 0xB1
#define CHAR_DBL_QUOTE_RIGHT 0xB2
#define CHAR_SGL_QUOTE_LEFT 0xB3
#define CHAR_SGL_QUOTE_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
#define CHAR_COMMA 0xB8
#define CHAR_MULT_SIGN 0xB9
#define CHAR_SLASH 0xBA
#define CHAR_A 0xBB
#define CHAR_B 0xBC
#define CHAR_C 0xBD
#define CHAR_D 0xBE
#define CHAR_E 0xBF
#define CHAR_F 0xC0
#define CHAR_G 0xC1
#define CHAR_H 0xC2
#define CHAR_I 0xC3
#define CHAR_J 0xC4
#define CHAR_K 0xC5
#define CHAR_L 0xC6
#define CHAR_M 0xC7
#define CHAR_N 0xC8
#define CHAR_O 0xC9
#define CHAR_P 0xCA
#define CHAR_Q 0xCB
#define CHAR_R 0xCC
#define CHAR_S 0xCD
#define CHAR_T 0xCE
#define CHAR_U 0xCF
#define CHAR_V 0xD0
#define CHAR_W 0xD1
#define CHAR_X 0xD2
#define CHAR_Y 0xD3
#define CHAR_Z 0xD4
#define CHAR_a 0xD5
#define CHAR_b 0xD6
#define CHAR_c 0xD7
#define CHAR_d 0xD8
#define CHAR_e 0xD9
#define CHAR_f 0xDA
#define CHAR_g 0xDB
#define CHAR_h 0xDC
#define CHAR_i 0xDD
#define CHAR_j 0xDE
#define CHAR_k 0xDF
#define CHAR_l 0xE0
#define CHAR_m 0xE1
#define CHAR_n 0xE2
#define CHAR_o 0xE3
#define CHAR_p 0xE4
#define CHAR_q 0xE5
#define CHAR_r 0xE6
#define CHAR_s 0xE7
#define CHAR_t 0xE8
#define CHAR_u 0xE9
#define CHAR_v 0xEA
#define CHAR_w 0xEB
#define CHAR_x 0xEC
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_BLACK_TRIANGLE 0xEF
#define CHAR_COLON 0xF0
#define CHAR_A_DIAERESIS 0xF1
#define CHAR_O_DIAERESIS 0xF2
#define CHAR_U_DIAERESIS 0xF3
#define CHAR_a_DIAERESIS 0xF4
#define CHAR_o_DIAERESIS 0xF5
#define CHAR_u_DIAERESIS 0xF6
#define CHAR_DYNAMIC 0xF7
#define CHAR_KEYPAD_ICON 0xF8
#define CHAR_EXTRA_SYMBOL 0xF9
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
#define CHAR_NEWLINE 0xFE
#define EOS 0xFF // end of string
// CHAR_KEYPAD_ICON chars
#define CHAR_A_BUTTON 0x00
#define CHAR_B_BUTTON 0x01
#define CHAR_L_BUTTON 0x02
#define CHAR_R_BUTTON 0x03
#define CHAR_START_BUTTON 0x04
#define CHAR_SELECT_BUTTON 0x05
#define CHAR_DPAD_UP 0x06
#define CHAR_DPAD_DOWN 0x07
#define CHAR_DPAD_LEFT 0x08
#define CHAR_DPAD_RIGHT 0x09
#define CHAR_DPAD_UPDOWN 0x0A
#define CHAR_DPAD_LEFTRIGHT 0x0B
#define CHAR_DPAD_NONE 0x0C
// CHAR_EXTRA_SYMBOL chars
#define CHAR_UP_ARROW_2 0x00
#define CHAR_DOWN_ARROW_2 0x01
#define CHAR_LEFT_ARROW_2 0x02
#define CHAR_RIGHT_ARROW_2 0x03
#define CHAR_PLUS_2 0x04
#define CHAR_LV_2 0x05
#define CHAR_PP 0x06
#define CHAR_ID 0x07
#define CHAR_NO 0x08
#define CHAR_UNDERSCORE 0x09
#define EXT_CTRL_CODE_COLOR 0x01
#define EXT_CTRL_CODE_HIGHLIGHT 0x02
#define EXT_CTRL_CODE_SHADOW 0x03
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04
#define EXT_CTRL_CODE_PALETTE 0x05
#define EXT_CTRL_CODE_FONT 0x06
#define EXT_CTRL_CODE_RESET_SIZE 0x07
#define EXT_CTRL_CODE_PAUSE 0x08
#define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09
#define EXT_CTRL_CODE_WAIT_SE 0x0A
#define EXT_CTRL_CODE_PLAY_BGM 0x0B
#define EXT_CTRL_CODE_ESCAPE 0x0C
#define EXT_CTRL_CODE_SHIFT_TEXT 0x0D
#define EXT_CTRL_CODE_SHIFT_DOWN 0x0E
#define EXT_CTRL_CODE_FILL_WINDOW 0x0F
#define EXT_CTRL_CODE_PLAY_SE 0x10
#define EXT_CTRL_CODE_CLEAR 0x11
#define EXT_CTRL_CODE_SKIP 0x12
#define EXT_CTRL_CODE_CLEAR_TO 0x13
#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
#define EXT_CTRL_CODE_JPN 0x15
#define EXT_CTRL_CODE_ENG 0x16
#define EXT_CTRL_CODE_PAUSE_MUSIC 0x17
#define EXT_CTRL_CODE_RESUME_MUSIC 0x18
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GRAY 0x2
#define TEXT_COLOR_LIGHT_GRAY 0x3
#define TEXT_COLOR_RED 0x4
#define TEXT_COLOR_LIGHT_RED 0x5
#define TEXT_COLOR_GREEN 0x6
#define TEXT_COLOR_LIGHT_GREEN 0x7
#define TEXT_COLOR_BLUE 0x8
#define TEXT_COLOR_LIGHT_BLUE 0x9
#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white
#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green
#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white
#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine
#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green
#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean
#define PLACEHOLDER_ID_UNKNOWN 0x0
#define PLACEHOLDER_ID_PLAYER 0x1
#define PLACEHOLDER_ID_STRING_VAR_1 0x2
#define PLACEHOLDER_ID_STRING_VAR_2 0x3
#define PLACEHOLDER_ID_STRING_VAR_3 0x4
#define PLACEHOLDER_ID_KUN 0x5
#define PLACEHOLDER_ID_RIVAL 0x6
#define PLACEHOLDER_ID_VERSION 0x7
#define PLACEHOLDER_ID_AQUA 0x8
#define PLACEHOLDER_ID_MAGMA 0x9
#define PLACEHOLDER_ID_ARCHIE 0xA
#define PLACEHOLDER_ID_MAXIE 0xB
#define PLACEHOLDER_ID_KYOGRE 0xC
#define PLACEHOLDER_ID_GROUDON 0xD
// battle placeholders are located in battle_message.h
// Hiragana from 0x1-0x50, Katakana from 0x51-0xA0.
// This excludes Japanese punctuation, which end at 0xB0
#define JAPANESE_CHAR_END 0xA0
// Note that while all dot combinations are represented in
// the Braille font, they are not all meaningful characters.
// Only those that have direct single-character translations are listed.
#define BRAILLE_CHAR_SPACE 0x00
#define BRAILLE_CHAR_A 0x01
//
#define BRAILLE_CHAR_C 0x03
#define BRAILLE_CHAR_COMMA 0x04
#define BRAILLE_CHAR_B 0x05
#define BRAILLE_CHAR_I 0x06
#define BRAILLE_CHAR_F 0x07
//
#define BRAILLE_CHAR_E 0x09
//
#define BRAILLE_CHAR_D 0x0B
#define BRAILLE_CHAR_COLON 0x0C
#define BRAILLE_CHAR_H 0x0D
#define BRAILLE_CHAR_J 0x0E
#define BRAILLE_CHAR_G 0x0F
#define BRAILLE_CHAR_APOSTROPHE 0x10
#define BRAILLE_CHAR_K 0x11
#define BRAILLE_CHAR_SLASH 0x12
#define BRAILLE_CHAR_M 0x13
#define BRAILLE_CHAR_SEMICOLON 0x14
#define BRAILLE_CHAR_L 0x15
#define BRAILLE_CHAR_S 0x16
#define BRAILLE_CHAR_P 0x17
//
#define BRAILLE_CHAR_O 0x19
//
#define BRAILLE_CHAR_N 0x1B
#define BRAILLE_CHAR_EXCL_MARK 0x1C
#define BRAILLE_CHAR_R 0x1D
#define BRAILLE_CHAR_T 0x1E
#define BRAILLE_CHAR_Q 0x1F
//
#define BRAILLE_CHAR_PERIOD 0x2C
//
#define BRAILLE_CHAR_W 0x2E
//
#define BRAILLE_CHAR_HYPHEN 0x30
#define BRAILLE_CHAR_U 0x31
//
#define BRAILLE_CHAR_X 0x33
#define BRAILLE_CHAR_QUESTION_MARK 0x34 // Also double quote left
#define BRAILLE_CHAR_V 0x35
//
#define BRAILLE_CHAR_DBL_QUOTE_RIGHT 0x38
#define BRAILLE_CHAR_Z 0x39
#define BRAILLE_CHAR_NUMBER 0x3A
#define BRAILLE_CHAR_Y 0x3B
#define BRAILLE_CHAR_PAREN 0x3C
//
#define NUM_BRAILLE_CHARS 0x40
// Digits must be preceded by BRAILLE_CHAR_NUMBER
#define BRAILLE_CHAR_1 BRAILLE_CHAR_A
#define BRAILLE_CHAR_2 BRAILLE_CHAR_B
#define BRAILLE_CHAR_3 BRAILLE_CHAR_C
#define BRAILLE_CHAR_4 BRAILLE_CHAR_D
#define BRAILLE_CHAR_5 BRAILLE_CHAR_E
#define BRAILLE_CHAR_6 BRAILLE_CHAR_F
#define BRAILLE_CHAR_7 BRAILLE_CHAR_G
#define BRAILLE_CHAR_8 BRAILLE_CHAR_H
#define BRAILLE_CHAR_9 BRAILLE_CHAR_I
#define BRAILLE_CHAR_0 BRAILLE_CHAR_J
#endif // GUARD_CHARACTERS_H

View File

@ -7,6 +7,9 @@
#define OAM_MATRIX_COUNT 32
#define sAnchorX data[6]
#define sAnchorY data[7]
#define SET_SPRITE_TILE_RANGE(index, start, count) \
{ \
sSpriteTileRanges[index * 2] = start; \
@ -91,7 +94,7 @@ static void ApplyAffineAnimFrame(u8 matrixNum, struct AffineAnimFrameCmd *frameC
static u8 IndexOfSpriteTileTag(u16 tag);
static void AllocSpriteTileRange(u16 tag, u16 start, u16 count);
static void DoLoadSpritePalette(const u16 *src, u16 paletteOffset);
static void obj_update_pos2(struct Sprite* sprite, s32 a1, s32 a2);
static void UpdateSpriteMatrixAnchorPos(struct Sprite* sprite, s32 a1, s32 a2);
typedef void (*AnimFunc)(struct Sprite *);
typedef void (*AnimCmdFunc)(struct Sprite *);
@ -99,13 +102,13 @@ typedef void (*AffineAnimCmdFunc)(u8 matrixNum, struct Sprite *);
#define DUMMY_OAM_DATA \
{ \
.y = 160, \
.y = DISPLAY_HEIGHT, \
.affineMode = 0, \
.objMode = 0, \
.mosaic = 0, \
.bpp = 0, \
.shape = SPRITE_SHAPE(8x8), \
.x = 304, \
.x = DISPLAY_WIDTH + 64, \
.matrixNum = 0, \
.size = SPRITE_SIZE(8x8), \
.tileNum = 0, \
@ -159,41 +162,11 @@ static const struct Sprite sDummySprite =
{
.oam = DUMMY_OAM_DATA,
.anims = gDummySpriteAnimTable,
.images = NULL,
.affineAnims = gDummySpriteAffineAnimTable,
.template = &gDummySpriteTemplate,
.subspriteTables = NULL,
.callback = SpriteCallbackDummy,
.x = 304, .y = 160,
.x2 = 0, .y2 = 0,
.centerToCornerVecX = 0,
.centerToCornerVecY = 0,
.animNum = 0,
.animCmdIndex = 0,
.animDelayCounter = 0,
.animPaused = 0,
.affineAnimPaused = 0,
.animLoopCounter = 0,
.data = {0, 0, 0, 0, 0, 0, 0},
.inUse = 0,
.coordOffsetEnabled = 0,
.invisible = FALSE,
.flags_3 = 0,
.flags_4 = 0,
.flags_5 = 0,
.flags_6 = 0,
.flags_7 = 0,
.hFlip = 0,
.vFlip = 0,
.animBeginning = 0,
.affineAnimBeginning = 0,
.animEnded = 0,
.affineAnimEnded = 0,
.usingSheet = 0,
.flags_f = 0,
.sheetTileStart = 0,
.subspriteTableNum = 0,
.subspriteMode = 0,
.x = DISPLAY_WIDTH + 64,
.y = DISPLAY_HEIGHT,
.subpriority = 0xFF
};
@ -890,16 +863,26 @@ void ResetAllSprites(void)
ResetSprite(&gSprites[i]);
}
// UB: template pointer may point to freed temporary storage
void FreeSpriteTiles(struct Sprite *sprite)
{
// UB: template pointer may point to freed temporary storage
#ifdef UBFIX
if (!sprite || !sprite->template)
return;
#endif
if (sprite->template->tileTag != TAG_NONE)
FreeSpriteTilesByTag(sprite->template->tileTag);
}
// UB: template pointer may point to freed temporary storage
void FreeSpritePalette(struct Sprite *sprite)
{
// UB: template pointer may point to freed temporary storage
#ifdef UBFIX
if (!sprite || !sprite->template)
return;
#endif
FreeSpritePaletteByTag(sprite->template->paletteTag);
}
@ -1098,8 +1081,8 @@ void BeginAffineAnim(struct Sprite *sprite)
sprite->affineAnimEnded = FALSE;
ApplyAffineAnimFrame(matrixNum, &frameCmd);
sAffineAnimStates[matrixNum].delayCounter = frameCmd.duration;
if (sprite->flags_f)
obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
if (sprite->anchored)
UpdateSpriteMatrixAnchorPos(sprite, sprite->sAnchorX, sprite->sAnchorY);
}
}
@ -1124,8 +1107,8 @@ void ContinueAffineAnim(struct Sprite *sprite)
funcIndex = type - 32765;
sAffineAnimCmdFuncs[funcIndex](matrixNum, sprite);
}
if (sprite->flags_f)
obj_update_pos2(sprite, sprite->data[6], sprite->data[7]);
if (sprite->anchored)
UpdateSpriteMatrixAnchorPos(sprite, sprite->sAnchorX, sprite->sAnchorY);
}
}
@ -1219,14 +1202,16 @@ u8 GetSpriteMatrixNum(struct Sprite *sprite)
return matrixNum;
}
void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3)
// Used to shift a sprite's position as it scales.
// Only used by the minigame countdown, so that for instance the numbers don't slide up as they squish down before jumping.
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 x, s16 y)
{
sprite->data[6] = a2;
sprite->data[7] = a3;
sprite->flags_f = 1;
sprite->sAnchorX = x;
sprite->sAnchorY = y;
sprite->anchored = TRUE;
}
s32 sub_8007E28(s32 a0, s32 a1, s32 a2)
static s32 GetAnchorCoord(s32 a0, s32 a1, s32 coord)
{
s32 subResult, var1;
@ -1235,27 +1220,27 @@ s32 sub_8007E28(s32 a0, s32 a1, s32 a2)
var1 = -(subResult) >> 9;
else
var1 = -(subResult >> 9);
return a2 - ((u32)(a2 * a1) / (u32)(a0) + var1);
return coord - ((u32)(coord * a1) / (u32)(a0) + var1);
}
void obj_update_pos2(struct Sprite *sprite, s32 a1, s32 a2)
static void UpdateSpriteMatrixAnchorPos(struct Sprite *sprite, s32 x, s32 y)
{
s32 var0, var1, var2;
s32 dimension, var1, var2;
u32 matrixNum = sprite->oam.matrixNum;
if (a1 != 0x800)
if (x != NO_ANCHOR)
{
var0 = sOamDimensions32[sprite->oam.shape][sprite->oam.size].width;
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].a;
sprite->x2 = sub_8007E28(var1, var2, a1);
dimension = sOamDimensions32[sprite->oam.shape][sprite->oam.size].width;
var1 = dimension << 8;
var2 = (dimension << 16) / gOamMatrices[matrixNum].a;
sprite->x2 = GetAnchorCoord(var1, var2, x);
}
if (a2 != 0x800)
if (y != NO_ANCHOR)
{
var0 = sOamDimensions32[sprite->oam.shape][sprite->oam.size].height;
var1 = var0 << 8;
var2 = (var0 << 16) / gOamMatrices[matrixNum].d;
sprite->y2 = sub_8007E28(var1, var2, a2);
dimension = sOamDimensions32[sprite->oam.shape][sprite->oam.size].height;
var1 = dimension << 8;
var2 = (dimension << 16) / gOamMatrices[matrixNum].d;
sprite->y2 = GetAnchorCoord(var1, var2, y);
}
}

View File

@ -5,6 +5,9 @@
#define SPRITE_NONE 0xFF
#define TAG_NONE 0xFFFF
// Given to SetSpriteMatrixAnchor to skip anchoring one of the coords.
#define NO_ANCHOR 0x800
struct SpriteSheet
{
const void *data; // Raw uncompressed pixel data
@ -227,7 +230,7 @@ struct Sprite
bool16 animEnded:1; //0x10
bool16 affineAnimEnded:1; //0x20
bool16 usingSheet:1; //0x40
bool16 flags_f:1; //0x80
bool16 anchored:1; //0x80
/*0x40*/ u16 sheetTileStart;
@ -280,7 +283,7 @@ void FreeSpriteOamMatrix(struct Sprite *sprite);
void DestroySpriteAndFreeResources(struct Sprite *sprite);
void sub_800142C(u32 a1, u32 a2, u16 *a3, u16 a4, u32 a5);
void AnimateSprite(struct Sprite *sprite);
void sub_8007E18(struct Sprite* sprite, s16 a2, s16 a3);
void SetSpriteMatrixAnchor(struct Sprite* sprite, s16 x, s16 y);
void StartSpriteAnim(struct Sprite *sprite, u8 animNum);
void StartSpriteAnimIfDifferent(struct Sprite *sprite, u8 animNum);
void SeekSpriteAnim(struct Sprite *sprite, u8 animCmdIndex);

View File

@ -206,7 +206,7 @@ u8 *ConvertIntToDecimalStringN(u8 *dest, s32 value, enum StringConvertMode mode,
}
else if (state == WRITING_SPACES)
{
*dest++ = 0x77;
*dest++ = CHAR_SPACER;
}
value = temp;
@ -262,7 +262,7 @@ u8 *ConvertUIntToDecimalStringN(u8 *dest, u32 value, enum StringConvertMode mode
}
else if (state == WRITING_SPACES)
{
*dest++ = 0x77;
*dest++ = CHAR_SPACER;
}
value = temp;
@ -322,7 +322,7 @@ u8 *ConvertIntToHexStringN(u8 *dest, s32 value, enum StringConvertMode mode, u8
}
else if (state == WRITING_SPACES)
{
*dest++ = 0x77;
*dest++ = CHAR_SPACER;
}
value = temp;
@ -386,7 +386,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
{
const u8 setBrailleFont[] = {
EXT_CTRL_CODE_BEGIN,
EXT_CTRL_CODE_SIZE,
EXT_CTRL_CODE_FONT,
6,
EOS
};
@ -414,7 +414,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
break;
default:
*dest++ = c;
*dest++ = c + 0x40;
*dest++ = c + NUM_BRAILLE_CHARS;
break;
}
}
@ -664,7 +664,7 @@ u8 GetExtCtrlCodeLength(u8 code)
[EXT_CTRL_CODE_SHADOW] = 2,
[EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW] = 4,
[EXT_CTRL_CODE_PALETTE] = 2,
[EXT_CTRL_CODE_SIZE] = 2,
[EXT_CTRL_CODE_FONT] = 2,
[EXT_CTRL_CODE_RESET_SIZE] = 1,
[EXT_CTRL_CODE_PAUSE] = 2,
[EXT_CTRL_CODE_PAUSE_UNTIL_PRESS] = 1,

View File

@ -11,6 +11,27 @@
#include "blit.h"
#include "menu.h"
#include "dynamic_placeholder_text_util.h"
#include "fonts.h"
static u16 FontFunc_Small(struct TextPrinter *);
static u16 FontFunc_Normal(struct TextPrinter *);
static u16 FontFunc_Short(struct TextPrinter *);
static u16 FontFunc_ShortCopy1(struct TextPrinter *);
static u16 FontFunc_ShortCopy2(struct TextPrinter *);
static u16 FontFunc_ShortCopy3(struct TextPrinter *);
static u16 FontFunc_Narrow(struct TextPrinter *);
static u16 FontFunc_SmallNarrow(struct TextPrinter *);
static void DecompressGlyph_Small(u16 glyphId, bool32 isJapanese);
static void DecompressGlyph_Normal(u16 glyphId, bool32 isJapanese);
static void DecompressGlyph_Short(u16 glyphId, bool32 isJapanese);
static void DecompressGlyph_Narrow(u16 glyphId, bool32 isJapanese);
static void DecompressGlyph_SmallNarrow(u16 glyphId, bool32 isJapanese);
static void DecompressGlyph_Bold(u16 glyphId);
static u32 GetGlyphWidth_Small(u16 glyphId, bool32 isJapanese);
static u32 GetGlyphWidth_Normal(u16 glyphId, bool32 isJapanese);
static u32 GetGlyphWidth_Short(u16 glyphId, bool32 isJapanese);
static u32 GetGlyphWidth_Narrow(u16 glyphId, bool32 isJapanese);
static u32 GetGlyphWidth_SmallNarrow(u16 glyphId, bool32 isJapanese);
EWRAM_DATA struct TextPrinter gTempTextPrinter = {0};
EWRAM_DATA struct TextPrinter gTextPrinters[NUM_TEXT_PRINTERS] = {0};
@ -49,20 +70,20 @@ const u8 gDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow.4bpp");
const u8 gDarkDownArrowTiles[] = INCBIN_U8("graphics/fonts/down_arrow_RS.4bpp");
const u8 gUnusedFRLGBlankedDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_blanked_down_arrow.4bpp");
const u8 gUnusedFRLGDownArrow[] = INCBIN_U8("graphics/fonts/unused_frlg_down_arrow.4bpp");
const u8 gDownArrowYCoords[] = { 0x0, 0x1, 0x2, 0x1 };
const u8 gWindowVerticalScrollSpeeds[] = { 0x1, 0x2, 0x4, 0x0 };
const u8 gDownArrowYCoords[] = { 0, 1, 2, 1 };
const u8 gWindowVerticalScrollSpeeds[] = { 1, 2, 4, 0x0 };
const struct GlyphWidthFunc gGlyphWidthFuncs[] =
static const struct GlyphWidthFunc sGlyphWidthFuncs[] =
{
{ 0x0, GetGlyphWidthFont0 },
{ 0x1, GetGlyphWidthFont1 },
{ 0x2, GetGlyphWidthFont2 },
{ 0x3, GetGlyphWidthFont2 },
{ 0x4, GetGlyphWidthFont2 },
{ 0x5, GetGlyphWidthFont2 },
{ 0x6, GetGlyphWidthFont6 },
{ 0x7, GetGlyphWidthFont7 },
{ 0x8, GetGlyphWidthFont8 }
{ FONT_SMALL, GetGlyphWidth_Small },
{ FONT_NORMAL, GetGlyphWidth_Normal },
{ FONT_SHORT, GetGlyphWidth_Short },
{ FONT_SHORT_COPY_1, GetGlyphWidth_Short },
{ FONT_SHORT_COPY_2, GetGlyphWidth_Short },
{ FONT_SHORT_COPY_3, GetGlyphWidth_Short },
{ FONT_BRAILLE, GetGlyphWidth_Braille },
{ FONT_NARROW, GetGlyphWidth_Narrow },
{ FONT_SMALL_NARROW, GetGlyphWidth_SmallNarrow }
};
const struct KeypadIcon gKeypadIcons[] =
@ -84,52 +105,127 @@ const struct KeypadIcon gKeypadIcons[] =
const u8 gKeypadIconTiles[] = INCBIN_U8("graphics/fonts/keypad_icons.4bpp");
const struct FontInfo gFontInfos[] =
static const struct FontInfo sFontInfos[] =
{
{ Font0Func, 0x5, 0xC, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font1Func, 0x6, 0x10, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font2Func, 0x6, 0xE, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font3Func, 0x6, 0xE, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font4Func, 0x6, 0xE, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font5Func, 0x6, 0xE, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font6Func, 0x8, 0x10, 0x0, 0x8, 0x0, 0x2, 0x1, 0x3 },
{ Font7Func, 0x5, 0x10, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ Font8Func, 0x5, 0x8, 0x0, 0x0, 0x0, 0x2, 0x1, 0x3 },
{ NULL, 0x8, 0x8, 0x0, 0x0, 0x0, 0x1, 0x2, 0xF }
[FONT_SMALL] = {
.fontFunction = FontFunc_Small,
.maxLetterWidth = 5,
.maxLetterHeight = 12,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_NORMAL] = {
.fontFunction = FontFunc_Normal,
.maxLetterWidth = 6,
.maxLetterHeight = 16,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_SHORT] = {
.fontFunction = FontFunc_Short,
.maxLetterWidth = 6,
.maxLetterHeight = 14,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_SHORT_COPY_1] = {
.fontFunction = FontFunc_ShortCopy1,
.maxLetterWidth = 6,
.maxLetterHeight = 14,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_SHORT_COPY_2] = {
.fontFunction = FontFunc_ShortCopy2,
.maxLetterWidth = 6,
.maxLetterHeight = 14,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_SHORT_COPY_3] = {
.fontFunction = FontFunc_ShortCopy3,
.maxLetterWidth = 6,
.maxLetterHeight = 14,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_BRAILLE] = {
.fontFunction = FontFunc_Braille,
.maxLetterWidth = 8,
.maxLetterHeight = 16,
.letterSpacing = 0,
.lineSpacing = 8,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_NARROW] = {
.fontFunction = FontFunc_Narrow,
.maxLetterWidth = 5,
.maxLetterHeight = 16,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_SMALL_NARROW] = {
.fontFunction = FontFunc_SmallNarrow,
.maxLetterWidth = 5,
.maxLetterHeight = 8,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 2,
.bgColor = 1,
.shadowColor = 3,
},
[FONT_BOLD] = {
.fontFunction = NULL,
.maxLetterWidth = 8,
.maxLetterHeight = 8,
.letterSpacing = 0,
.lineSpacing = 0,
.fgColor = 1,
.bgColor = 2,
.shadowColor = 15,
}
};
const u8 gMenuCursorDimensions[][2] =
static const u8 sMenuCursorDimensions[][2] =
{
{ 0x8, 0xC },
{ 0x8, 0xF },
{ 0x8, 0xE },
{ 0x8, 0xE },
{ 0x8, 0xE },
{ 0x8, 0xE },
{ 0x8, 0x10 },
{ 0x8, 0xF },
{ 0x8, 0x8 },
{ 0x0, 0x0 }
[FONT_SMALL] = { 8, 12 },
[FONT_NORMAL] = { 8, 15 },
[FONT_SHORT] = { 8, 14 },
[FONT_SHORT_COPY_1] = { 8, 14 },
[FONT_SHORT_COPY_2] = { 8, 14 },
[FONT_SHORT_COPY_3] = { 8, 14 },
[FONT_BRAILLE] = { 8, 16 },
[FONT_NARROW] = { 8, 15 },
[FONT_SMALL_NARROW] = { 8, 8 },
[FONT_BOLD] = {}
};
const u16 gFont9JapaneseGlyphs[] = INCBIN_U16("graphics/fonts/font9.hwjpnfont");
const u16 gFontBoldJapaneseGlyphs[] = INCBIN_U16("graphics/fonts/bold.hwjpnfont");
extern const u16 gFont8LatinGlyphs[];
extern const u8 gFont8LatinGlyphWidths[];
extern const u16 gFont0LatinGlyphs[];
extern const u8 gFont0LatinGlyphWidths[];
extern const u16 gFont7LatinGlyphs[];
extern const u8 gFont7LatinGlyphWidths[];
extern const u16 gFont2LatinGlyphs[];
extern const u8 gFont2LatinGlyphWidths[];
extern const u16 gFont1LatinGlyphs[];
extern const u8 gFont1LatinGlyphWidths[];
extern const u16 gFont0JapaneseGlyphs[];
extern const u16 gFont1JapaneseGlyphs[];
extern const u16 gFont2JapaneseGlyphs[];
extern const u8 gFont2JapaneseGlyphWidths[];
void SetFontsPointer(const struct FontInfo *fonts)
static void SetFontsPointer(const struct FontInfo *fonts)
{
gFonts = fonts;
}
@ -565,98 +661,98 @@ void ClearTextSpan(struct TextPrinter *textPrinter, u32 width)
}
}
u16 Font0Func(struct TextPrinter *textPrinter)
static u16 FontFunc_Small(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 0;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SMALL;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font1Func(struct TextPrinter *textPrinter)
static u16 FontFunc_Normal(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 1;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_NORMAL;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font2Func(struct TextPrinter *textPrinter)
static u16 FontFunc_Short(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 2;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SHORT;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font3Func(struct TextPrinter *textPrinter)
static u16 FontFunc_ShortCopy1(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 3;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SHORT_COPY_1;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font4Func(struct TextPrinter *textPrinter)
static u16 FontFunc_ShortCopy2(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 4;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SHORT_COPY_2;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font5Func(struct TextPrinter *textPrinter)
static u16 FontFunc_ShortCopy3(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 5;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SHORT_COPY_3;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font7Func(struct TextPrinter *textPrinter)
static u16 FontFunc_Narrow(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 7;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_NARROW;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
u16 Font8Func(struct TextPrinter *textPrinter)
static u16 FontFunc_SmallNarrow(struct TextPrinter *textPrinter)
{
struct TextPrinterSubStruct *subStruct = (struct TextPrinterSubStruct *)(&textPrinter->subStructFields);
if (subStruct->hasGlyphIdBeenSet == FALSE)
if (subStruct->hasFontIdBeenSet == FALSE)
{
subStruct->glyphId = 8;
subStruct->hasGlyphIdBeenSet = TRUE;
subStruct->fontId = FONT_SMALL_NARROW;
subStruct->hasFontIdBeenSet = TRUE;
}
return RenderText(textPrinter);
}
@ -906,8 +1002,8 @@ u16 RenderText(struct TextPrinter *textPrinter)
case EXT_CTRL_CODE_PALETTE:
textPrinter->printerTemplate.currentChar++;
return 2;
case EXT_CTRL_CODE_SIZE:
subStruct->glyphId = *textPrinter->printerTemplate.currentChar;
case EXT_CTRL_CODE_FONT:
subStruct->fontId = *textPrinter->printerTemplate.currentChar;
textPrinter->printerTemplate.currentChar++;
return 2;
case EXT_CTRL_CODE_RESET_SIZE:
@ -1022,27 +1118,27 @@ u16 RenderText(struct TextPrinter *textPrinter)
return 1;
}
switch (subStruct->glyphId)
switch (subStruct->fontId)
{
case 0:
DecompressGlyphFont0(currChar, textPrinter->japanese);
case FONT_SMALL:
DecompressGlyph_Small(currChar, textPrinter->japanese);
break;
case 1:
DecompressGlyphFont1(currChar, textPrinter->japanese);
case FONT_NORMAL:
DecompressGlyph_Normal(currChar, textPrinter->japanese);
break;
case 2:
case 3:
case 4:
case 5:
DecompressGlyphFont2(currChar, textPrinter->japanese);
case FONT_SHORT:
case FONT_SHORT_COPY_1:
case FONT_SHORT_COPY_2:
case FONT_SHORT_COPY_3:
DecompressGlyph_Short(currChar, textPrinter->japanese);
break;
case 7:
DecompressGlyphFont7(currChar, textPrinter->japanese);
case FONT_NARROW:
DecompressGlyph_Narrow(currChar, textPrinter->japanese);
break;
case 8:
DecompressGlyphFont8(currChar, textPrinter->japanese);
case FONT_SMALL_NARROW:
DecompressGlyph_SmallNarrow(currChar, textPrinter->japanese);
break;
case 6:
case FONT_BRAILLE:
break;
}
@ -1125,7 +1221,8 @@ u16 RenderText(struct TextPrinter *textPrinter)
return 1;
}
u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
// Unused
static u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
{
int i;
u8 width;
@ -1136,10 +1233,8 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
u8 lineWidths[8];
const u8 *strLocal;
for (i = 0; i < 8; i++)
{
for (i = 0; i < (int)ARRAY_COUNT(lineWidths); i++)
lineWidths[i] = 0;
}
width = 0;
line = 0;
@ -1170,7 +1265,7 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
case EXT_CTRL_CODE_HIGHLIGHT:
case EXT_CTRL_CODE_SHADOW:
case EXT_CTRL_CODE_PALETTE:
case EXT_CTRL_CODE_SIZE:
case EXT_CTRL_CODE_FONT:
case EXT_CTRL_CODE_PAUSE:
case EXT_CTRL_CODE_ESCAPE:
case EXT_CTRL_CODE_SHIFT_TEXT:
@ -1216,14 +1311,14 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
return (u8)(GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH) + letterSpacing) * width;
}
u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32)
static u32 (*GetFontWidthFunc(u8 fontId))(u16, bool32)
{
u32 i;
for (i = 0; i < 9; ++i)
for (i = 0; i < ARRAY_COUNT(sGlyphWidthFuncs); ++i)
{
if (glyphId == gGlyphWidthFuncs[i].fontId)
return gGlyphWidthFuncs[i].func;
if (fontId == sGlyphWidthFuncs[i].fontId)
return sGlyphWidthFuncs[i].func;
}
return NULL;
@ -1233,7 +1328,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
{
bool8 isJapanese;
int minGlyphWidth;
u32 (*func)(u16 glyphId, bool32 isJapanese);
u32 (*func)(u16 fontId, bool32 isJapanese);
int localLetterSpacing;
u32 lineWidth;
const u8 *bufferPointer;
@ -1319,7 +1414,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
case EXT_CTRL_CODE_SHIFT_DOWN:
++str;
break;
case EXT_CTRL_CODE_SIZE:
case EXT_CTRL_CODE_FONT:
func = GetFontWidthFunc(*++str);
if (func == NULL)
return 0;
@ -1401,7 +1496,7 @@ s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
return width;
}
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str)
{
u8 shadowColor;
u8 *strLocal;
@ -1449,7 +1544,7 @@ u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
shadowColor = strLocal[strPos++];
GenerateFontHalfRowLookupTable(fgColor, bgColor, shadowColor);
continue;
case EXT_CTRL_CODE_SIZE:
case EXT_CTRL_CODE_FONT:
fontId = strLocal[strPos++];
break;
case EXT_CTRL_CODE_PLAY_BGM:
@ -1490,12 +1585,12 @@ u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str)
default:
switch (fontId)
{
case 9:
DecompressGlyphFont9(temp);
case FONT_BOLD:
DecompressGlyph_Bold(temp);
break;
case 1:
case FONT_NORMAL:
default:
DecompressGlyphFont1(temp, 1);
DecompressGlyph_Normal(temp, TRUE);
break;
}
CpuCopy32(gCurGlyph.gfxBufferTop, pixels, 0x20);
@ -1543,7 +1638,7 @@ u8 GetKeypadIconHeight(u8 keypadIconId)
void SetDefaultFontsPointer(void)
{
SetFontsPointer(&gFontInfos[0]);
SetFontsPointer(sFontInfos);
}
u8 GetFontAttribute(u8 fontId, u8 attributeId)
@ -1552,28 +1647,28 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
switch (attributeId)
{
case FONTATTR_MAX_LETTER_WIDTH:
result = gFontInfos[fontId].maxLetterWidth;
result = sFontInfos[fontId].maxLetterWidth;
break;
case FONTATTR_MAX_LETTER_HEIGHT:
result = gFontInfos[fontId].maxLetterHeight;
result = sFontInfos[fontId].maxLetterHeight;
break;
case FONTATTR_LETTER_SPACING:
result = gFontInfos[fontId].letterSpacing;
result = sFontInfos[fontId].letterSpacing;
break;
case FONTATTR_LINE_SPACING:
result = gFontInfos[fontId].lineSpacing;
result = sFontInfos[fontId].lineSpacing;
break;
case FONTATTR_UNKNOWN:
result = gFontInfos[fontId].unk;
result = sFontInfos[fontId].unk;
break;
case FONTATTR_COLOR_FOREGROUND:
result = gFontInfos[fontId].fgColor;
result = sFontInfos[fontId].fgColor;
break;
case FONTATTR_COLOR_BACKGROUND:
result = gFontInfos[fontId].bgColor;
result = sFontInfos[fontId].bgColor;
break;
case FONTATTR_COLOR_SHADOW:
result = gFontInfos[fontId].shadowColor;
result = sFontInfos[fontId].shadowColor;
break;
}
return result;
@ -1581,16 +1676,16 @@ u8 GetFontAttribute(u8 fontId, u8 attributeId)
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension)
{
return gMenuCursorDimensions[fontId][whichDimension];
return sMenuCursorDimensions[fontId][whichDimension];
}
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
static void DecompressGlyph_Small(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
if (isJapanese == 1)
{
glyphs = gFont0JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
glyphs = gFontSmallJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom);
gCurGlyph.width = 8;
@ -1598,8 +1693,8 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
}
else
{
glyphs = gFont0LatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFont0LatinGlyphWidths[glyphId];
glyphs = gFontSmallLatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFontSmallLatinGlyphWidths[glyphId];
if (gCurGlyph.width <= 8)
{
@ -1618,21 +1713,21 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
}
}
u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese)
static u32 GetGlyphWidth_Small(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
else
return gFont0LatinGlyphWidths[glyphId];
return gFontSmallLatinGlyphWidths[glyphId];
}
void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese)
static void DecompressGlyph_Narrow(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
if (isJapanese == TRUE)
{
glyphs = gFont1JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10));
glyphs = gFontNormalJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom);
gCurGlyph.width = 8;
@ -1640,8 +1735,8 @@ void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese)
}
else
{
glyphs = gFont7LatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFont7LatinGlyphWidths[glyphId];
glyphs = gFontNarrowLatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFontNarrowLatinGlyphWidths[glyphId];
if (gCurGlyph.width <= 8)
{
@ -1660,21 +1755,21 @@ void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese)
}
}
u32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese)
static u32 GetGlyphWidth_Narrow(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
else
return gFont7LatinGlyphWidths[glyphId];
return gFontNarrowLatinGlyphWidths[glyphId];
}
void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese)
static void DecompressGlyph_SmallNarrow(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
if (isJapanese == TRUE)
{
glyphs = gFont0JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
glyphs = gFontSmallJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId & 0xF));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom);
gCurGlyph.width = 8;
@ -1682,8 +1777,8 @@ void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese)
}
else
{
glyphs = gFont8LatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFont8LatinGlyphWidths[glyphId];
glyphs = gFontSmallNarrowLatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFontSmallNarrowLatinGlyphWidths[glyphId];
if (gCurGlyph.width <= 8)
{
@ -1702,32 +1797,32 @@ void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese)
}
}
u32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese)
static u32 GetGlyphWidth_SmallNarrow(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
else
return gFont8LatinGlyphWidths[glyphId];
return gFontSmallNarrowLatinGlyphWidths[glyphId];
}
void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese)
static void DecompressGlyph_Short(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
if (isJapanese == TRUE)
{
glyphs = gFont2JapaneseGlyphs + (0x100 * (glyphId >> 0x3)) + (0x10 * (glyphId & 0x7));
glyphs = gFontShortJapaneseGlyphs + (0x100 * (glyphId >> 0x3)) + (0x10 * (glyphId & 0x7));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x8, gCurGlyph.gfxBufferTop + 8);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom); // gCurGlyph + 0x20
DecompressGlyphTile(glyphs + 0x88, gCurGlyph.gfxBufferBottom + 8); // gCurGlyph + 0x60
gCurGlyph.width = gFont2JapaneseGlyphWidths[glyphId];
gCurGlyph.width = gFontShortJapaneseGlyphWidths[glyphId];
gCurGlyph.height = 14;
}
else
{
glyphs = gFont2LatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFont2LatinGlyphWidths[glyphId];
glyphs = gFontShortLatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFontShortLatinGlyphWidths[glyphId];
if (gCurGlyph.width <= 8)
{
@ -1746,21 +1841,21 @@ void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese)
}
}
u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese)
static u32 GetGlyphWidth_Short(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return gFont2JapaneseGlyphWidths[glyphId];
return gFontShortJapaneseGlyphWidths[glyphId];
else
return gFont2LatinGlyphWidths[glyphId];
return gFontShortLatinGlyphWidths[glyphId];
}
void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
static void DecompressGlyph_Normal(u16 glyphId, bool32 isJapanese)
{
const u16* glyphs;
if (isJapanese == TRUE)
{
glyphs = gFont1JapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10));
glyphs = gFontNormalJapaneseGlyphs + (0x100 * (glyphId >> 0x4)) + (0x8 * (glyphId % 0x10));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom);
gCurGlyph.width = 8;
@ -1768,8 +1863,8 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
}
else
{
glyphs = gFont1LatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFont1LatinGlyphWidths[glyphId];
glyphs = gFontNormalLatinGlyphs + (0x20 * glyphId);
gCurGlyph.width = gFontNormalLatinGlyphWidths[glyphId];
if (gCurGlyph.width <= 8)
{
@ -1788,19 +1883,19 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
}
}
u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese)
static u32 GetGlyphWidth_Normal(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
else
return gFont1LatinGlyphWidths[glyphId];
return gFontNormalLatinGlyphWidths[glyphId];
}
void DecompressGlyphFont9(u16 glyphId)
static void DecompressGlyph_Bold(u16 glyphId)
{
const u16* glyphs;
glyphs = gFont9JapaneseGlyphs + (0x100 * (glyphId >> 4)) + (0x8 * (glyphId & 0xF));
glyphs = gFontBoldJapaneseGlyphs + (0x100 * (glyphId >> 4)) + (0x8 * (glyphId & 0xF));
DecompressGlyphTile(glyphs, gCurGlyph.gfxBufferTop);
DecompressGlyphTile(glyphs + 0x80, gCurGlyph.gfxBufferBottom);
gCurGlyph.width = 8;

View File

@ -1,280 +1,26 @@
#ifndef GUARD_TEXT_H
#define GUARD_TEXT_H
#define CHAR_SPACE 0x00
#define CHAR_A_GRAVE 0x01
#define CHAR_A_ACUTE 0x02
#define CHAR_A_CIRCUMFLEX 0x03
#define CHAR_C_CEDILLA 0x04
#define CHAR_E_GRAVE 0x05
#define CHAR_E_ACUTE 0x06
#define CHAR_E_CIRCUMFLEX 0x07
#define CHAR_E_DIAERESIS 0x08
#define CHAR_I_GRAVE 0x09
//#define CHAR_I_ACUTE 0x0A // Is 0x5A instead
#define CHAR_I_CIRCUMFLEX 0x0B
#define CHAR_I_DIAERESIS 0x0C
#define CHAR_O_GRAVE 0x0D
#define CHAR_O_ACUTE 0x0E
#define CHAR_O_CIRCUMFLEX 0x0F
#define CHAR_OE 0x10
#define CHAR_U_GRAVE 0x11
#define CHAR_U_ACUTE 0x12
#define CHAR_U_CIRCUMFLEX 0x13
#define CHAR_N_TILDE 0x14
#define CHAR_ESZETT 0x15
#define CHAR_a_GRAVE 0x16
#define CHAR_a_ACUTE 0x17
//#define CHAR_a_CIRCUMFLEX 0x18 // Is 0x68 instead
#define CHAR_c_CEDILLA 0x19
#define CHAR_e_GRAVE 0x1A
#define CHAR_e_ACUTE 0x1B
#define CHAR_e_CIRCUMFLEX 0x1C
#define CHAR_e_DIAERESIS 0x1D
#define CHAR_i_GRAVE 0x1E
//#define CHAR_i_ACUTE 0x1F // Is 0x6F instead
#define CHAR_i_CIRCUMFLEX 0x20
#define CHAR_i_DIAERESIS 0x21
#define CHAR_o_GRAVE 0x22
#define CHAR_o_ACUTE 0x23
#define CHAR_o_CIRCUMFLEX 0x24
#define CHAR_oe 0x25
#define CHAR_u_GRAVE 0x26
#define CHAR_u_ACUTE 0x27
#define CHAR_u_CIRCUMFLEX 0x28
#define CHAR_n_TILDE 0x29
#define CHAR_MASCULINE_ORDINAL 0x2A
#define CHAR_FEMININE_ORDINAL 0x2B
#define CHAR_SUPER_ER 0x2C
#define CHAR_AMPERSAND 0x2D
#define CHAR_PLUS 0x2E
//
#define CHAR_LV 0x34
#define CHAR_EQUALS 0x35
#define CHAR_SEMICOLON 0x36
#define CHAR_BARD_WORD_DELIMIT 0x37 // Empty space to separate words in Bard's song
#define CHAR_INV_QUESTION_MARK 0x51
#define CHAR_INV_EXCL_MARK 0x52
#define CHAR_PK 0x53
#define CHAR_MN 0x54
#define CHAR_PO 0x55
#define CHAR_KE 0x56
#define CHAR_BLOCK_1 0x57 // Each of these 3
#define CHAR_BLOCK_2 0x58 // chars contains 1/3
#define CHAR_BLOCK_3 0x59 // of the word BLOCK
#define CHAR_I_ACUTE 0x5A
#define CHAR_PERCENT 0x5B
#define CHAR_LEFT_PAREN 0x5C
#define CHAR_RIGHT_PAREN 0x5D
//
#define CHAR_a_CIRCUMFLEX 0x68
//
#define CHAR_i_ACUTE 0x6F
//
#define CHAR_SPACER 0x77 // Empty space
//
#define CHAR_UP_ARROW 0x79
#define CHAR_DOWN_ARROW 0x7A
#define CHAR_LEFT_ARROW 0x7B
#define CHAR_RIGHT_ARROW 0x7C
//
#define CHAR_SUPER_E 0x84
#define CHAR_LESS_THAN 0x85
#define CHAR_GREATER_THAN 0x86
//
#define CHAR_SUPER_RE 0xA0
#define CHAR_0 0xA1
#define CHAR_1 0xA2
#define CHAR_2 0xA3
#define CHAR_3 0xA4
#define CHAR_4 0xA5
#define CHAR_5 0xA6
#define CHAR_6 0xA7
#define CHAR_7 0xA8
#define CHAR_8 0xA9
#define CHAR_9 0xAA
#define CHAR_EXCL_MARK 0xAB
#define CHAR_QUESTION_MARK 0xAC
#define CHAR_PERIOD 0xAD
#define CHAR_HYPHEN 0xAE
#define CHAR_BULLET 0xAF
#define CHAR_ELLIPSIS 0xB0
#define CHAR_DBL_QUOT_LEFT 0xB1
#define CHAR_DBL_QUOT_RIGHT 0xB2
#define CHAR_SGL_QUOT_LEFT 0xB3
#define CHAR_SGL_QUOT_RIGHT 0xB4
#define CHAR_MALE 0xB5
#define CHAR_FEMALE 0xB6
#define CHAR_CURRENCY 0xB7
#define CHAR_COMMA 0xB8
#define CHAR_MULT_SIGN 0xB9
#define CHAR_SLASH 0xBA
#define CHAR_A 0xBB
#define CHAR_B 0xBC
#define CHAR_C 0xBD
#define CHAR_D 0xBE
#define CHAR_E 0xBF
#define CHAR_F 0xC0
#define CHAR_G 0xC1
#define CHAR_H 0xC2
#define CHAR_I 0xC3
#define CHAR_J 0xC4
#define CHAR_K 0xC5
#define CHAR_L 0xC6
#define CHAR_M 0xC7
#define CHAR_N 0xC8
#define CHAR_O 0xC9
#define CHAR_P 0xCA
#define CHAR_Q 0xCB
#define CHAR_R 0xCC
#define CHAR_S 0xCD
#define CHAR_T 0xCE
#define CHAR_U 0xCF
#define CHAR_V 0xD0
#define CHAR_W 0xD1
#define CHAR_X 0xD2
#define CHAR_Y 0xD3
#define CHAR_Z 0xD4
#define CHAR_a 0xD5
#define CHAR_b 0xD6
#define CHAR_c 0xD7
#define CHAR_d 0xD8
#define CHAR_e 0xD9
#define CHAR_f 0xDA
#define CHAR_g 0xDB
#define CHAR_h 0xDC
#define CHAR_i 0xDD
#define CHAR_j 0xDE
#define CHAR_k 0xDF
#define CHAR_l 0xE0
#define CHAR_m 0xE1
#define CHAR_n 0xE2
#define CHAR_o 0xE3
#define CHAR_p 0xE4
#define CHAR_q 0xE5
#define CHAR_r 0xE6
#define CHAR_s 0xE7
#define CHAR_t 0xE8
#define CHAR_u 0xE9
#define CHAR_v 0xEA
#define CHAR_w 0xEB
#define CHAR_x 0xEC
#define CHAR_y 0xED
#define CHAR_z 0xEE
#define CHAR_BLACK_TRIANGLE 0xEF
#define CHAR_COLON 0xF0
#define CHAR_A_DIAERESIS 0xF1
#define CHAR_O_DIAERESIS 0xF2
#define CHAR_U_DIAERESIS 0xF3
#define CHAR_a_DIAERESIS 0xF4
#define CHAR_o_DIAERESIS 0xF5
#define CHAR_u_DIAERESIS 0xF6
#define CHAR_DYNAMIC 0xF7
#define CHAR_KEYPAD_ICON 0xF8
#define CHAR_EXTRA_SYMBOL 0xF9
#define CHAR_PROMPT_SCROLL 0xFA // waits for button press and scrolls dialog
#define CHAR_PROMPT_CLEAR 0xFB // waits for button press and clears dialog
#define EXT_CTRL_CODE_BEGIN 0xFC // extended control code
#define PLACEHOLDER_BEGIN 0xFD // string placeholder
#define CHAR_NEWLINE 0xFE
#define EOS 0xFF // end of string
// CHAR_KEYPAD_ICON chars
#define CHAR_A_BUTTON 0x00
#define CHAR_B_BUTTON 0x01
#define CHAR_L_BUTTON 0x02
#define CHAR_R_BUTTON 0x03
#define CHAR_START_BUTTON 0x04
#define CHAR_SELECT_BUTTON 0x05
#define CHAR_DPAD_UP 0x06
#define CHAR_DPAD_DOWN 0x07
#define CHAR_DPAD_LEFT 0x08
#define CHAR_DPAD_RIGHT 0x09
#define CHAR_DPAD_UPDOWN 0x0A
#define CHAR_DPAD_LEFTRIGHT 0x0B
#define CHAR_DPAD_NONE 0x0C
// CHAR_EXTRA_SYMBOL chars
#define CHAR_UP_ARROW_2 0x00
#define CHAR_DOWN_ARROW_2 0x01
#define CHAR_LEFT_ARROW_2 0x02
#define CHAR_RIGHT_ARROW_2 0x03
#define CHAR_PLUS_2 0x04
#define CHAR_LV_2 0x05
#define CHAR_PP 0x06
#define CHAR_ID 0x07
#define CHAR_NO 0x08
#define CHAR_UNDERSCORE 0x09
#define EXT_CTRL_CODE_COLOR 0x01
#define EXT_CTRL_CODE_HIGHLIGHT 0x02
#define EXT_CTRL_CODE_SHADOW 0x03
#define EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW 0x04
#define EXT_CTRL_CODE_PALETTE 0x05
#define EXT_CTRL_CODE_SIZE 0x06
#define EXT_CTRL_CODE_RESET_SIZE 0x07
#define EXT_CTRL_CODE_PAUSE 0x08
#define EXT_CTRL_CODE_PAUSE_UNTIL_PRESS 0x09
#define EXT_CTRL_CODE_WAIT_SE 0x0A
#define EXT_CTRL_CODE_PLAY_BGM 0x0B
#define EXT_CTRL_CODE_ESCAPE 0x0C
#define EXT_CTRL_CODE_SHIFT_TEXT 0x0D
#define EXT_CTRL_CODE_SHIFT_DOWN 0x0E
#define EXT_CTRL_CODE_FILL_WINDOW 0x0F
#define EXT_CTRL_CODE_PLAY_SE 0x10
#define EXT_CTRL_CODE_CLEAR 0x11
#define EXT_CTRL_CODE_SKIP 0x12
#define EXT_CTRL_CODE_CLEAR_TO 0x13
#define EXT_CTRL_CODE_MIN_LETTER_SPACING 0x14
#define EXT_CTRL_CODE_JPN 0x15
#define EXT_CTRL_CODE_ENG 0x16
#define EXT_CTRL_CODE_PAUSE_MUSIC 0x17
#define EXT_CTRL_CODE_RESUME_MUSIC 0x18
#define TEXT_COLOR_TRANSPARENT 0x0
#define TEXT_COLOR_WHITE 0x1
#define TEXT_COLOR_DARK_GRAY 0x2
#define TEXT_COLOR_LIGHT_GRAY 0x3
#define TEXT_COLOR_RED 0x4
#define TEXT_COLOR_LIGHT_RED 0x5
#define TEXT_COLOR_GREEN 0x6
#define TEXT_COLOR_LIGHT_GREEN 0x7
#define TEXT_COLOR_BLUE 0x8
#define TEXT_COLOR_LIGHT_BLUE 0x9
#define TEXT_DYNAMIC_COLOR_1 0xA // Usually white
#define TEXT_DYNAMIC_COLOR_2 0xB // Usually white w/ tinge of green
#define TEXT_DYNAMIC_COLOR_3 0xC // Usually white
#define TEXT_DYNAMIC_COLOR_4 0xD // Usually aquamarine
#define TEXT_DYNAMIC_COLOR_5 0xE // Usually blue-green
#define TEXT_DYNAMIC_COLOR_6 0xF // Usually cerulean
#define PLACEHOLDER_ID_UNKNOWN 0x0
#define PLACEHOLDER_ID_PLAYER 0x1
#define PLACEHOLDER_ID_STRING_VAR_1 0x2
#define PLACEHOLDER_ID_STRING_VAR_2 0x3
#define PLACEHOLDER_ID_STRING_VAR_3 0x4
#define PLACEHOLDER_ID_KUN 0x5
#define PLACEHOLDER_ID_RIVAL 0x6
#define PLACEHOLDER_ID_VERSION 0x7
#define PLACEHOLDER_ID_AQUA 0x8
#define PLACEHOLDER_ID_MAGMA 0x9
#define PLACEHOLDER_ID_ARCHIE 0xA
#define PLACEHOLDER_ID_MAXIE 0xB
#define PLACEHOLDER_ID_KYOGRE 0xC
#define PLACEHOLDER_ID_GROUDON 0xD
// battle placeholders are located in battle_message.h
// Hiragana from 0x1-0x50, Katakana from 0x51-0xA0.
// This excludes Japanese punctuation, which end at 0xB0
#define JAPANESE_CHAR_END 0xA0
#include "characters.h"
#define NUM_TEXT_PRINTERS 32
#define TEXT_SPEED_FF 0xFF
enum
{
enum {
FONT_SMALL,
FONT_NORMAL,
FONT_SHORT,
FONT_SHORT_COPY_1,
FONT_SHORT_COPY_2,
FONT_SHORT_COPY_3,
FONT_BRAILLE,
FONT_NARROW,
FONT_SMALL_NARROW, // Very similar to FONT_SMALL, some glyphs are narrower
FONT_BOLD, // JP glyph set only
};
enum {
FONTATTR_MAX_LETTER_WIDTH,
FONTATTR_MAX_LETTER_HEIGHT,
FONTATTR_LETTER_SPACING,
@ -287,12 +33,12 @@ enum
struct TextPrinterSubStruct
{
u8 glyphId:4; // 0x14
u8 fontId:4; // 0x14
bool8 hasPrintBeenSpedUp:1;
u8 unk:3;
u8 downArrowDelay:5;
u8 downArrowYPosIdx:2;
bool8 hasGlyphIdBeenSet:1;
bool8 hasFontIdBeenSet:1;
u8 autoScrollDelay;
};
@ -377,7 +123,6 @@ extern TextFlags gTextFlags;
extern u8 gDisableTextPrinters;
extern struct TextGlyph gCurGlyph;
void SetFontsPointer(const struct FontInfo *fonts);
void DeactivateAllTextPrinters(void);
u16 AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
bool16 AddTextPrinter(struct TextPrinterTemplate *template, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16));
@ -393,15 +138,6 @@ void CopyGlyphToWindow(struct TextPrinter *x);
void ClearTextSpan(struct TextPrinter *textPrinter, u32 width);
u8 GetMenuCursorDimensionByFont(u8, u8);
u16 Font0Func(struct TextPrinter *textPrinter);
u16 Font1Func(struct TextPrinter *textPrinter);
u16 Font2Func(struct TextPrinter *textPrinter);
u16 Font3Func(struct TextPrinter *textPrinter);
u16 Font4Func(struct TextPrinter *textPrinter);
u16 Font5Func(struct TextPrinter *textPrinter);
u16 Font7Func(struct TextPrinter *textPrinter);
u16 Font8Func(struct TextPrinter *textPrinter);
void TextPrinterInitDownArrowCounters(struct TextPrinter *textPrinter);
void TextPrinterDrawDownArrow(struct TextPrinter *textPrinter);
void TextPrinterClearDownArrow(struct TextPrinter *textPrinter);
@ -410,10 +146,8 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
bool16 TextPrinterWait(struct TextPrinter *textPrinter);
void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);
u16 RenderText(struct TextPrinter *textPrinter);
u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
u8 RenderTextHandleBold(u8 *pixels, u8 fontId, u8 *str);
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
u8 GetKeypadIconTileOffset(u8 keypadIconId);
u8 GetKeypadIconWidth(u8 keypadIconId);
@ -421,20 +155,9 @@ u8 GetKeypadIconHeight(u8 keypadIconId);
void SetDefaultFontsPointer(void);
u8 GetFontAttribute(u8 fontId, u8 attributeId);
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese);
u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont9(u16 glyphId);
// unk_text_util_2.c
u16 Font6Func(struct TextPrinter *textPrinter);
u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
// braille.c
u16 FontFunc_Braille(struct TextPrinter *textPrinter);
u32 GetGlyphWidth_Braille(u16 glyphId, bool32 isJapanese);
#endif // GUARD_TEXT_H

Binary file not shown.

View File

Before

Width:  |  Height:  |  Size: 290 B

After

Width:  |  Height:  |  Size: 290 B

View File

Before

Width:  |  Height:  |  Size: 159 B

After

Width:  |  Height:  |  Size: 159 B

View File

Before

Width:  |  Height:  |  Size: 328 B

After

Width:  |  Height:  |  Size: 328 B

View File

Before

Width:  |  Height:  |  Size: 154 B

After

Width:  |  Height:  |  Size: 154 B

View File

Before

Width:  |  Height:  |  Size: 202 B

After

Width:  |  Height:  |  Size: 202 B

View File

Before

Width:  |  Height:  |  Size: 310 B

After

Width:  |  Height:  |  Size: 310 B

View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

View File

Before

Width:  |  Height:  |  Size: 181 B

After

Width:  |  Height:  |  Size: 181 B

View File

Before

Width:  |  Height:  |  Size: 286 B

After

Width:  |  Height:  |  Size: 286 B

View File

Before

Width:  |  Height:  |  Size: 1.0 KiB

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

Before

Width:  |  Height:  |  Size: 102 B

After

Width:  |  Height:  |  Size: 102 B

View File

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

Before

Width:  |  Height:  |  Size: 614 B

After

Width:  |  Height:  |  Size: 614 B

View File

Before

Width:  |  Height:  |  Size: 359 B

After

Width:  |  Height:  |  Size: 359 B

View File

Before

Width:  |  Height:  |  Size: 259 B

After

Width:  |  Height:  |  Size: 259 B

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 292 B

After

Width:  |  Height:  |  Size: 292 B

View File

Before

Width:  |  Height:  |  Size: 212 B

After

Width:  |  Height:  |  Size: 212 B

View File

Before

Width:  |  Height:  |  Size: 324 B

After

Width:  |  Height:  |  Size: 324 B

View File

Before

Width:  |  Height:  |  Size: 237 B

After

Width:  |  Height:  |  Size: 237 B

View File

Before

Width:  |  Height:  |  Size: 255 B

After

Width:  |  Height:  |  Size: 255 B

View File

Before

Width:  |  Height:  |  Size: 220 B

After

Width:  |  Height:  |  Size: 220 B

View File

@ -1,32 +0,0 @@
.byte 3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 4, 4, 5, 5, 5
.byte 5, 5, 5, 5, 5, 5, 5, 5, 3, 5, 5, 5, 5, 5, 4, 3
.byte 4, 4, 5, 5, 5, 6, 5, 5, 5, 5, 5, 5, 8, 7, 8, 3
.byte 3, 3, 3, 3, 8, 8, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 5, 5, 5, 8, 8, 8, 8, 8, 8, 8, 4, 7, 5, 5, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 4
.byte 3, 3, 3, 3, 3, 3, 3, 5, 3, 8, 8, 8, 8, 1, 2, 3
.byte 4, 5, 6, 7, 5, 7, 7, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5, 5, 5
.byte 5, 5, 5, 5, 5, 5, 5, 8, 5, 8, 5, 5, 5, 5, 5, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5
.byte 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8
.byte 7, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3

View File

@ -1,32 +0,0 @@
.byte 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6
.byte 8, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, 3
.byte 6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 9, 7, 6, 3
.byte 3, 3, 3, 3, 10, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 6, 6, 4, 8, 8, 8, 7, 8, 8, 4, 6, 6, 4, 4, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 6
.byte 3, 3, 3, 3, 3, 3, 3, 6, 3, 7, 7, 7, 7, 1, 2, 3
.byte 4, 5, 6, 7, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 6, 3, 6, 3
.byte 6, 6, 6, 3, 3, 6, 6, 6, 3, 7, 6, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 4, 5, 6
.byte 4, 6, 6, 6, 6, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 8
.byte 3, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 10, 10, 10, 10, 8, 10, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3

View File

@ -1,32 +0,0 @@
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9
.byte 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 9
.byte 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 8, 7, 8, 8, 8, 8, 8, 8, 8, 8, 5, 9, 10, 10, 10
.byte 8, 10, 10, 10, 10, 8, 8, 8, 10, 10, 8, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 2, 4, 6
.byte 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
.byte 5, 6, 6, 6, 6, 6, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10

View File

@ -1,32 +0,0 @@
.byte 3, 6, 6, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6
.byte 8, 6, 6, 6, 6, 6, 6, 6, 3, 6, 6, 6, 6, 6, 6, 3
.byte 6, 6, 6, 6, 6, 8, 6, 6, 6, 6, 6, 6, 9, 8, 8, 3
.byte 3, 3, 3, 3, 10, 8, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 6, 6, 6, 8, 8, 8, 8, 8, 8, 4, 6, 8, 5, 5, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 3, 3, 3, 3, 3, 6
.byte 3, 3, 3, 3, 3, 3, 3, 6, 3, 12, 12, 12, 12, 1, 2, 3
.byte 4, 5, 6, 7, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 5
.byte 6, 6, 6, 3, 3, 6, 6, 8, 5, 9, 6, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6
.byte 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 6, 6, 4, 6, 5
.byte 5, 6, 5, 6, 6, 6, 5, 5, 5, 6, 6, 6, 6, 6, 6, 8
.byte 5, 6, 6, 6, 6, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 12, 12, 12, 12, 8, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3

View File

@ -1,32 +0,0 @@
.byte 3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 4, 4, 5, 5, 5
.byte 8, 5, 5, 5, 5, 6, 5, 5, 3, 5, 5, 5, 5, 5, 4, 3
.byte 4, 4, 5, 5, 5, 8, 5, 5, 5, 5, 5, 6, 9, 6, 6, 3
.byte 3, 3, 3, 3, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 5, 5, 4, 8, 8, 8, 7, 8, 8, 4, 4, 6, 4, 4, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 4
.byte 3, 3, 3, 3, 3, 3, 3, 5, 3, 7, 7, 7, 7, 1, 2, 3
.byte 4, 5, 6, 7, 5, 6, 6, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 3, 5, 3
.byte 5, 5, 5, 3, 3, 5, 5, 6, 3, 6, 6, 5, 5, 5, 5, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 5
.byte 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8
.byte 3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 10, 10, 10, 10, 8, 8, 10, 8, 10, 10, 10, 10, 10, 10, 10, 10
.byte 10, 10, 10, 10, 10, 10, 10, 10, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3

View File

@ -1,32 +0,0 @@
.byte 3, 5, 5, 5, 5, 5, 5, 5, 5, 4, 3, 4, 4, 5, 5, 5
.byte 5, 5, 5, 5, 5, 5, 5, 5, 3, 4, 5, 5, 5, 5, 4, 3
.byte 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 8, 5, 6, 3
.byte 3, 3, 3, 3, 8, 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 5, 5, 3, 8, 8, 8, 8, 8, 8, 8, 4, 5, 4, 4, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 5, 3, 3, 3, 3, 3, 3, 4
.byte 3, 3, 3, 3, 3, 3, 3, 5, 3, 8, 8, 8, 8, 1, 2, 3
.byte 4, 5, 6, 7, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 7, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5, 3, 5, 5
.byte 5, 5, 5, 3, 3, 5, 5, 5, 3, 5, 5, 5, 5, 5, 5, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 5
.byte 5, 5, 5, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 4, 4, 5
.byte 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 7
.byte 3, 5, 5, 5, 5, 5, 5, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8
.byte 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 3

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 4.4 KiB

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.0 KiB

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

Before

Width:  |  Height:  |  Size: 3.5 KiB

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

Before

Width:  |  Height:  |  Size: 3.4 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Some files were not shown because too many files have changed in this diff Show More