Use RPGe dialog font at runtime from ROM

This commit is contained in:
Luke Hubmayer-Werner 2023-08-16 23:02:59 +09:30
parent c9dcb8a17c
commit e9d0dd4579
5 changed files with 46 additions and 27 deletions

View File

@ -78,8 +78,8 @@
"
'
0
1
@ -151,8 +151,8 @@ it
li
ll
'
"
:
;
,
@ -166,10 +166,10 @@ ti
fi
pe
l
'
"
p
el
if
lt
tl
@ -204,31 +204,31 @@ tt
%
/
:
A
B
X
Y
L
R
E
H
M
P
S
C
T
+
°C

View File

@ -42,6 +42,7 @@ var character_battle_sprite_palette_stone_texture: ImageTexture
var weapon_textures = {}
var font_atlas_image: Image
var font_atlas_texture: ImageTexture
var font: BitmapFont
var character_status_palette_replacements = {
'poison': {4: '$7EDB = #DEB5FF', 8: '$4DD3 = #9C739C'}, # Also kneel
@ -537,6 +538,23 @@ func load_from_structs(data: Dictionary):
# Make font atlas
self.font_atlas_image = make_font_glyph_atlas(data.font_glyphs_small, data.font_glyphs_dialogue, data.font_glyphs_kanji)
self.font_atlas_texture = texture_from_image(self.font_atlas_image)
self.font = BitmapFont.new()
self.font.add_texture(self.font_atlas_texture)
# self.font.extra_spacing_top = -2
# self.font.extra_spacing_bottom = -1
# self.font.extra_spacing_char = -1
# self.font.extra_spacing_space = 1
var glyph_table: PoolStringArray = StringLoader.glyph_tables.RPGe_dialog
var advance_table: PoolByteArray = data.RPGe_font_character_widths
for i in 256:
var s := glyph_table[i]
if len(s) == 1: # ignore icons etc. for now
var c := s.ord_at(0)
self.font.add_char(c, 0, Rect2((i%32)*16, (i/32)*12 + 32, advance_table[i], 12))
if c == 0x2019: # RIGHT SINGLE QUOTATION MARK
# Add for ' as well
self.font.add_char(0x27, 0, Rect2((i%32)*16, (i/32)*12 + 32, advance_table[i], 12))
ThemeManager.theme.default_font = self.font
const gba_marker := 'FINAL FANTASY V ADVANCE SYGMAB'
const gba_marker_pos_US := 0x12FE10

View File

@ -3,6 +3,7 @@ var menu_r5 := 0
var menu_g5 := 0
var menu_b5 := 16
var theme := preload('res://theme/menu_theme.tres')
var border_image: Image = preload('res://theme/border.png')
var border_texture := preload('res://theme/border_imagetexture.tres')
var border_stylebox := preload('res://theme/border_stylebox.tres')

View File

@ -43,10 +43,6 @@ func _ready():
bbg.align = LineEdit.ALIGN_RIGHT
add_child(bbg)
# var fontbox := TextureRect.new()
# fontbox.texture = SpriteLoader.font_atlas_texture
# add_child(fontbox)
# var lbl = Label.new()
# for i in 22:
# lbl.text = lbl.text + '%s - %s\n' % [StringLoader.get_job_name(i), StringLoader.get_job_desc(i)]

View File

@ -33,6 +33,10 @@ func _ready() -> void:
ProjectSettings.set_setting('display/window/size/snap_to_integer', false)
make_hexview(RomLoader.snes_bytes, 480)
var fontbox := TextureRect.new()
fontbox.texture = SpriteLoader.font_atlas_texture
add_child(fontbox)
func scroll_hexview(rows: int):
var current_row: int = (-hexbox.rect_position.y)/4
var next_row = current_row + rows