HRO

From OHRRPGCE-Wiki

Jump to: navigation, search
This article is about the OHRRPGCE FMF project, which is an alternate implementation of the OHRRPGCE for Java mobile phones. Technical implementation details discussed here should not be confused with those of the RPG format

636 bytes per hero seemed a bit excessive, so this lump was compressed. The first byte now contained the number of heroes, and the second byte contained some scaling factors, used to stuff stat caps into a byte apiece. This technically will affect the accuracy of hero stats, but except for artistic reasons (e.g., a demon with exactly 666 mp) players should not notice any difference.

[edit] The Header

Data Meaning
BYTENumber of heroes in this file
BYTE(AABBCCDD)Scaling factors, all -1
A=mp_multiplier (low)
B=mp_multiplier (high)
C=stat_multiplier (low)
D=stat_multiplier (high)

Following the header are a number of variable-length records

[edit] Hero Record Format

Data' Meaning
STRHero name. If the first byte of this string is hex-value FF, this hero is null. No more bytes are read; the next hero record begins immediately.
BYTEHero Sprite
BYTEHero Palette
BYTEWalkabout Sprite
BYTEWalkabout Palette
BYTEDefault Level (0xFF = "Party Average")
BYTEDefault Weapon
INTHP Level 0
INTHP Level 99
BYTEMP Level 0 / mp_multiplier(low)
BYTEMP Level 99 / mp_multiplier(high)
BYTEStrength Level 0 / stat_multiplier(low)
BYTEStrength Level 99 / stat_multiplier(high)
BYTEAccuracy Level 0 / stat_multiplier(low)
BYTEAccuracy Level 99 / stat_multiplier(high)
BYTEDefense Level 0 / stat_multiplier(low)
BYTEDefense Level 99 / stat_multiplier(high)
BYTEDodge % Level 0 / stat_multiplier(low)
BYTEDodge % Level 99 / stat_multiplier(high)
BYTEMagic Level 0 / stat_multiplier(low)
BYTEMagic Level 99 / stat_multiplier(high)
BYTEWill Level 0 / stat_multiplier(low)
BYTEWill Level 99 / stat_multiplier(high)
BYTESpeed Level 0 / stat_multiplier(low)
BYTESpeed Level 99 / stat_multiplier(high)
BYTECounter Level 0 / stat_multiplier(low)
BYTECounter Level 99 / stat_multiplier(high)
BYTEFocus Level 0 / stat_multiplier(low)
BYTEFocus Level 99 / stat_multiplier(high)
BYTEExtra hits Level 0 / stat_multiplier(low)
BYTEExtra hits Level 99 / stat_multiplier(high)
3 BYTES(XXXXAAAA ABBBBBCC CCCDDDDD) Number of spells in each list
A = List 1
B = List 2
C = List 3
D = List 4
X = unused
2 BYTES * X List 1's spells. First byte is Attack number; second byte is level learnt + 1 (if zero, it's taught by an item)
2 BYTES * X List 2's spells. Same format as above.
2 BYTES * X List 3's spells. Same format as above.
2 BYTES * X List 4's spells. Same format as above.
BIT * 8 Weak against elements 1-8
BIT * 8 Strong against elements 1-8
BIT * 8 Absorbs elements 1-8
BYTE(ABXXXXXX) A = Show rename prompt when added to the party.
B = Allow renaming from the status menu.
X = undefined
STR Spell List 1's name
STR Spell List 2's name
STR Spell List 3's name
STR Spell List 4's name
4 BYTES Spell List 1 to 4's type:
0 = MP based
1 = FF1-style Level MP based
2 = Random
3 = reserved for item-consuming spells?
BYTE Have hero tag
BYTE Hero is alive tag
BYTE Hero is leader tag
BYTE Hero is in active party tag
BYTE Max length of hero name when renaming (0=default, 16?)
INT "Attack A" Hand X-coordinate
INT "Attack A" Hand Y-coordinate
INT "Attack B" Hand X-coordinate
INT "Attack B" Hand Y-coordinate

'Note: All "STR" variables in .HRO are null-terminated Strings.


Some people have expressed concern that this format is too confining, and will crash if, say, the "Hero is leader" tag is 300. To them, "patience!" The XRPG format can always be changed (I can think of two easy fixes now...)


List of Lumps specific to the XRPG format. Other lumps comply with existing .RPG lump specifications.

HEADER.LMP . _FNT.png . .PT4_# . .PT6_# . .HERO_#.png . SEZ . EFX . BFF . FOE . _TIL_#.png . _MXS_#.png . ###.MAP . HRO . ATK . SCRIPTS_#.HF . SCRIPTS.LST

Personal tools