merge w pret
2
.github/calcrom/webhook.sh
vendored
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -1792,3 +1792,9 @@
|
|||
setfieldeffectargument 2, \priority
|
||||
dofieldeffect FLDEFF_SPARKLE
|
||||
.endm
|
||||
|
||||
.macro braillemsgbox text:req
|
||||
braillemessage \text
|
||||
waitbuttonpress
|
||||
closebraillemessage
|
||||
.endm
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
10
charmap.txt
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
gUnknown_03006370
|
||||
gEReaderData
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -0,0 +1,6 @@
|
|||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gEReaderLinkData_Start::
|
||||
.incbin "data/ereader_link_data.bin"
|
||||
gEReaderLinkData_End::
|
||||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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::
|
||||
|
|
|
|||
76
data/fonts.s
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
|
|
@ -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!$"
|
||||
170
data/scripts/profile_man.inc
Normal 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!$"
|
||||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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.$"
|
||||
|
|
|
|||
|
|
@ -1,5 +0,0 @@
|
|||
.section .rodata
|
||||
|
||||
.align 2
|
||||
gUnknown_089A3470::
|
||||
.incbin "data/unknown_serial_data.bin"
|
||||
18
gflib/bg.c
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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
|
|
@ -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
|
||||
103
gflib/sprite.c
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
417
gflib/text.c
|
|
@ -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;
|
||||
|
|
|
|||
319
gflib/text.h
|
|
@ -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
|
||||
|
|
|
|||
BIN
graphics/battle_anims/sprites/black_ball.bin
Normal file
|
Before Width: | Height: | Size: 290 B After Width: | Height: | Size: 290 B |
|
Before Width: | Height: | Size: 159 B After Width: | Height: | Size: 159 B |
|
Before Width: | Height: | Size: 328 B After Width: | Height: | Size: 328 B |
|
Before Width: | Height: | Size: 154 B After Width: | Height: | Size: 154 B |
|
Before Width: | Height: | Size: 202 B After Width: | Height: | Size: 202 B |
|
Before Width: | Height: | Size: 310 B After Width: | Height: | Size: 310 B |
|
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 220 B |
|
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 181 B |
|
Before Width: | Height: | Size: 286 B After Width: | Height: | Size: 286 B |
|
Before Width: | Height: | Size: 1.0 KiB After Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 102 B After Width: | Height: | Size: 102 B |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.2 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 614 B After Width: | Height: | Size: 614 B |
|
Before Width: | Height: | Size: 359 B After Width: | Height: | Size: 359 B |
|
Before Width: | Height: | Size: 259 B After Width: | Height: | Size: 259 B |
|
Before Width: | Height: | Size: 1.8 KiB After Width: | Height: | Size: 1.8 KiB |
|
Before Width: | Height: | Size: 292 B After Width: | Height: | Size: 292 B |
|
Before Width: | Height: | Size: 212 B After Width: | Height: | Size: 212 B |
|
Before Width: | Height: | Size: 324 B After Width: | Height: | Size: 324 B |
|
Before Width: | Height: | Size: 237 B After Width: | Height: | Size: 237 B |
|
Before Width: | Height: | Size: 255 B After Width: | Height: | Size: 255 B |
|
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 220 B |
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
Before Width: | Height: | Size: 2.3 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 4.4 KiB After Width: | Height: | Size: 4.4 KiB |
|
Before Width: | Height: | Size: 3.0 KiB After Width: | Height: | Size: 3.0 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |