Welcome to Data Crystal's new home! Data Crystal is now part of the TCRF family (sort of).
The wiki has recently moved; please report any issues in Discord. Pardon the dust.

Final Fantasy I & II: Dawn of Souls/ROM map: Difference between revisions

From Data Crystal
Jump to navigation Jump to search
mNo edit summary
(Adding Shopping Routines, changing some formatting)
Line 8: Line 8:
''Core Routines:''
''Core Routines:''
* <tt>000EFC-000F81 (000086)</tt> = '''Core division-related routines'''
* <tt>000EFC-000F81 (000086)</tt> = '''Core division-related routines'''
* <tt>000F18</tt> = General division routine. Given r0 = divident and r1 = divisor, checks for zero and calls software division
* <tt>000F18</tt> = '''General division routine. Given r0 = divident and r1 = divisor, checks for zero and calls software division'''
* <tt>000F2C</tt> = As above, but only returns remainder in r0
* <tt>000F2C</tt> = '''As above, but only returns remainder in r0'''
* <tt>000F68</tt> = Divides r1 by r2; stores the product in [r0],[r0+8] and the remainder in [r0+4]
* <tt>000F68</tt> = '''Divides r1 by r2; stores the product in [r0],[r0+8] and the remainder in [r0+4]'''




Line 19: Line 19:
* <tt>0158FC-01591B (000020)</tt> = Unknown ASM Routine (reads $02001DF0)
* <tt>0158FC-01591B (000020)</tt> = Unknown ASM Routine (reads $02001DF0)


==FF1 Stat and Animation Routines==
==FF1 Stat Routines==
* <tt>01591C-0159B3 (000098)</tt> = '''Total Attack Determination'''
* <tt>01591C-0159B3 (000098)</tt> = '''Total Attack Determination'''
* <tt>0159B4-015ACB (000118)</tt> = '''Total Defence Determination'''
* <tt>0159B4-015ACB (000118)</tt> = '''Total Defence Determination'''
Line 32: Line 32:
* <tt>015F44-015F83 (000040)</tt> = '''Total Accuracy Determination'''
* <tt>015F44-015F83 (000040)</tt> = '''Total Accuracy Determination'''


==FF1 Animation Routines==
* <tt>01E2FC-01E8C3 (0005C8)</tt> = '''Root Spell/Weapon Animation Handling'''
* <tt>01E2FC-01E8C3 (0005C8)</tt> = '''Root Spell/Weapon Animation Handling'''
* <tt>01E8C4-01F12F (00086C)</tt> = Unknown Routines
* <tt>01E8C4-01F12F (00086C)</tt> = Unknown Routines
Line 44: Line 45:
* <tt>02C0C4-02C43F (00037C)</tt> = Two Unknown Routines
* <tt>02C0C4-02C43F (00037C)</tt> = Two Unknown Routines
* <tt>02C440-02C7A7 (000368)</tt> = '''Base Number Printing Routine'''
* <tt>02C440-02C7A7 (000368)</tt> = '''Base Number Printing Routine'''
 
* <tt>02C7A8-0302BB (003B14)</tt> = Unknown
* <tt>0302BC-0304DB (000220)</tt> = '''Out-of-Battle Spell Usability Pointer Table+Routines'''
* <tt>0302BC-0304DB (000220)</tt> = '''Out-of-Battle Spell Usability Pointer Table+Routines'''
* <tt>0304DC-0308BB (0003E0)</tt> = '''Out-of-Battle Spell Effect Pointer Table+Routines'''
* <tt>0304DC-0308BB (0003E0)</tt> = '''Out-of-Battle Spell Effect Pointer Table+Routines'''
* <tt>0308BC-038917 (00805C)</tt> = Unknown
* <tt>038918-039347 (000A30)</tt> = '''''Root Status Screen Drawing Routine'''''
* <tt>039348-03A1A7 (000E60)</tt> = Unknown Routines
* <tt>03A1A8-03A26B (0000C4)</tt> = '''Out-of-Battle Healing Spell Base Healing Determination'''
* <tt>03A26C-03A2FF (000094)</tt> = '''Armor Equipping: Writing to Memory'''
* <tt>03A300-03A37F (000080)</tt> = '''Armor Removing: Adding to Inventory'''


* <tt>03A1A8-03A26B (0000C4)</tt> = '''Out-of-Battle Healing Spell Base Healing Determination'''
==FF1 Shopping Routines==
* <tt>043910-04465F (000D50)</tt> = '''''Root Buying Window Logic'''''
* <tt>044660-044B83 (000524)</tt> = Unknown Routines
* <tt>044B84-044BCB (000048)</tt> = '''Item/Armor/Weapon Sorting Order Loading Routine'''
* <tt>044BCC-044C3B (000070)</tt> = '''Buying: Does item already exist among team's gear?'''
* <tt>044C3C-044C6F (000034)</tt> = '''Buying: Does item already exist in inventory?'''
* <tt>044C70-0454E3 (000874)</tt> = ''Root Spell Buying Routine?''
* <tt>0454E4-0456A3 (0001C0)</tt> = '''Spell Buying: Can purchaser learn this spell?'''
* <tt>0456A4-0456E3 (000040)</tt> = '''Class Usability for Given Spell Determination'''
* <tt>0456E4-045F9B (0008B8)</tt> = Unknown Routines
* <tt>045F9C-04714B (0011B0)</tt> = '''''Root Buying/Selling Screen Drawing Routine'''''
* <tt>04714C-0471DB (000090)</tt> = Unknown Shopping-Related Routine
* <tt>0471DC-047813 (000638)</tt> = ''Root Shop Data Loading Routine?''

Revision as of 21:59, 4 March 2017

Chip tiny.png The following article is a ROM map for Final Fantasy I & II: Dawn of Souls.

The following offsets have been determined for Final Fantasy I only. All offsets are given in hexadecimal format. All currently described ASM routines are in Thumb mode. (Under Construction)

General Purpose Routines

Core Routines:

  • 000EFC-000F81 (000086) = Core division-related routines
  • 000F18 = General division routine. Given r0 = divident and r1 = divisor, checks for zero and calls software division
  • 000F2C = As above, but only returns remainder in r0
  • 000F68 = Divides r1 by r2; stores the product in [r0],[r0+8] and the remainder in [r0+4]


Game-Specific Routines:

  • 014E4C-014E6B (000020) = Uncompressed tile graphic size finder routine
  • 014E6C-0158E7 (000A7C) = Unknown (Short ASM routines)
  • 0158E8-0158FB (000014) = Chest State Determination Routine
  • 0158FC-01591B (000020) = Unknown ASM Routine (reads $02001DF0)

FF1 Stat Routines

  • 01591C-0159B3 (000098) = Total Attack Determination
  • 0159B4-015ACB (000118) = Total Defence Determination
  • 015ACC-015B8F (0000C4) = Total Evade Determination
  • 015B90-015C23 (000094) = Effective Max HP Determination
  • 015C24-015CB7 (000094) = Effective Max MP Determination
  • 015CB8-015D4B (000094) = Total Intellect Determination
  • 015D4C-015DDF (000094) = Total Agility Determination
  • 015DE0-015E73 (000094) = Total Stamina Determination
  • 015E74-015F07 (000094) = Total Strength Determination
  • 015F08-015F43 (00003C) = Current HP/MP Determination (And Possible Truncation)
  • 015F44-015F83 (000040) = Total Accuracy Determination

FF1 Animation Routines

  • 01E2FC-01E8C3 (0005C8) = Root Spell/Weapon Animation Handling
  • 01E8C4-01F12F (00086C) = Unknown Routines
  • 01F130-01F1A3 (000074) = Conditional Animation Effect Handling
  • 01F1A4-01F743 (0005A0) = Animation Chunk Storage Routine
  • 01F744-02B4B3 (00BD70) = Unknown/Animation-related routines; exact function undetermined
  • 02B4B4-02BE3F (00098C) = Unknown Routines

FF1 Text, Menu and Field Spell Routines

  • 02BE40-02BF7F (000140) = Base Menu Window Drawing Routine
  • 02BF80-02C0C3 (000144) = Base Text Printing Routine
  • 02C0C4-02C43F (00037C) = Two Unknown Routines
  • 02C440-02C7A7 (000368) = Base Number Printing Routine
  • 02C7A8-0302BB (003B14) = Unknown
  • 0302BC-0304DB (000220) = Out-of-Battle Spell Usability Pointer Table+Routines
  • 0304DC-0308BB (0003E0) = Out-of-Battle Spell Effect Pointer Table+Routines
  • 0308BC-038917 (00805C) = Unknown
  • 038918-039347 (000A30) = Root Status Screen Drawing Routine
  • 039348-03A1A7 (000E60) = Unknown Routines
  • 03A1A8-03A26B (0000C4) = Out-of-Battle Healing Spell Base Healing Determination
  • 03A26C-03A2FF (000094) = Armor Equipping: Writing to Memory
  • 03A300-03A37F (000080) = Armor Removing: Adding to Inventory

FF1 Shopping Routines

  • 043910-04465F (000D50) = Root Buying Window Logic
  • 044660-044B83 (000524) = Unknown Routines
  • 044B84-044BCB (000048) = Item/Armor/Weapon Sorting Order Loading Routine
  • 044BCC-044C3B (000070) = Buying: Does item already exist among team's gear?
  • 044C3C-044C6F (000034) = Buying: Does item already exist in inventory?
  • 044C70-0454E3 (000874) = Root Spell Buying Routine?
  • 0454E4-0456A3 (0001C0) = Spell Buying: Can purchaser learn this spell?
  • 0456A4-0456E3 (000040) = Class Usability for Given Spell Determination
  • 0456E4-045F9B (0008B8) = Unknown Routines
  • 045F9C-04714B (0011B0) = Root Buying/Selling Screen Drawing Routine
  • 04714C-0471DB (000090) = Unknown Shopping-Related Routine
  • 0471DC-047813 (000638) = Root Shop Data Loading Routine?