Users browsing this thread: 1 Guest(s)
Monster Expansion
I stated working on a monster expansion patch. According to assassin's first post in this thread there would be some code that needs to be changed in order to allow monster expansion. If I understand his sentence, monster 0x01FF (511) would be considered absent, which is no big deal in the end. Do anyone has an idea which code he is referring to?
Edit: Problem solved. Monster 511 will be considered the null value.
I documented what needed to be expanded in order to have 511 monsters and came up with this table. This takes into account my two other patches and does a similar AI expansion (almost whole bank) than FF3usME. Speaking of the editor, it will be broke for good with this patch. So I'm thinking coding an editor for everything concerning monsters (graphics, formations, packs, stats, AI) with an expansion management section. In the end, it will simplify the editing for my own hack and I'll save time considering the amount of work editing all this manually would take.
If I'm missing anything, please let me know. Right now I'll work on relocating the data manually to a test with monster 384.
Edit: Test with new monster went well :D
<table border=1 align="center">
<tr align="center" style="font-weight: bold;">
<td style="width:120px; height:30px;">Offset</td>
<td style="width:250px">Description</td>
<td style="width:100px">Bytes</td>
<td style="width:150px">Size</td>
<td style="width:150px">Exp. Size</td>
<td style="width:120px">Exp. Offset</td>
</tr>
<tr align="center">
<td>0FC050</td>
<td>Monster Names</td>
<td>10</td>
<td>0xF00</td>
<td>0x1400</td>
<td>same as original</td>
</tr>
<tr align="center">
<td>0F3600</td>
<td>Monster Y-Shift for Sprite Priority</td>
<td>1</td>
<td>0x180</td>
<td>0x200</td>
<td>N/A</td>
</tr>
<tr align="center">
<td>0FD0D0</td>
<td>Monster Attack Names</td>
<td>10</td>
<td>0xF00</td>
<td>0x1400</td>
<td>3C1400</td>
</tr>
<tr align="center">
<td>0F8400</td>
<td>Monster AI Pointers</td>
<td>2</td>
<td>0x300</td>
<td>0x400</td>
<td>3D0000</td>
</tr>
<tr align="center">
<td>0F8700</td>
<td>Monster AI</td>
<td>var</td>
<td>0x3950</td>
<td>0xFB00</td>
<td>3D0400</td>
</tr>
<tr align="center">
<td>0F3000</td>
<td>Item Stolen/Dropped</td>
<td>4</td>
<td>0x600</td>
<td>0x800</td>
<td>3C0C00</td>
</tr>
<tr align="center">
<td>0F0000</td>
<td>Monster Stats</td>
<td>32</td>
<td>0x3000</td>
<td>0x4000</td>
<td>31C000</td>
</tr>
<tr align="center">
<td>0F3D00</td>
<td>Control commands</td>
<td>4</td>
<td>0x600</td>
<td>0x800</td>
<td>3C0000</td>
</tr>
<tr align="center">
<td>0F4300</td>
<td>Sketch commands</td>
<td>2</td>
<td>0x300</td>
<td>0x400</td>
<td>3C0800</td>
</tr>
<tr align="center">
<td>127000</td>
<td>Monster/Esper visual specs</td>
<td>5</td>
<td>0x820</td>
<td>0xAA0</td>
<td>319D80</td>
</tr>
<tr align="center">
<td>0F37C0</td>
<td>Monster special attacks appearance</td>
<td>1</td>
<td>0x180</td>
<td>0x200</td>
<td>3C2800</td>
</tr>
</table>
Relocalization and expansion ASM changes:
Edit: Problem solved. Monster 511 will be considered the null value.
I documented what needed to be expanded in order to have 511 monsters and came up with this table. This takes into account my two other patches and does a similar AI expansion (almost whole bank) than FF3usME. Speaking of the editor, it will be broke for good with this patch. So I'm thinking coding an editor for everything concerning monsters (graphics, formations, packs, stats, AI) with an expansion management section. In the end, it will simplify the editing for my own hack and I'll save time considering the amount of work editing all this manually would take.
If I'm missing anything, please let me know. Right now I'll work on relocating the data manually to a test with monster 384.
Edit: Test with new monster went well :D
<table border=1 align="center">
<tr align="center" style="font-weight: bold;">
<td style="width:120px; height:30px;">Offset</td>
<td style="width:250px">Description</td>
<td style="width:100px">Bytes</td>
<td style="width:150px">Size</td>
<td style="width:150px">Exp. Size</td>
<td style="width:120px">Exp. Offset</td>
</tr>
<tr align="center">
<td>0FC050</td>
<td>Monster Names</td>
<td>10</td>
<td>0xF00</td>
<td>0x1400</td>
<td>same as original</td>
</tr>
<tr align="center">
<td>0F3600</td>
<td>Monster Y-Shift for Sprite Priority</td>
<td>1</td>
<td>0x180</td>
<td>0x200</td>
<td>N/A</td>
</tr>
<tr align="center">
<td>0FD0D0</td>
<td>Monster Attack Names</td>
<td>10</td>
<td>0xF00</td>
<td>0x1400</td>
<td>3C1400</td>
</tr>
<tr align="center">
<td>0F8400</td>
<td>Monster AI Pointers</td>
<td>2</td>
<td>0x300</td>
<td>0x400</td>
<td>3D0000</td>
</tr>
<tr align="center">
<td>0F8700</td>
<td>Monster AI</td>
<td>var</td>
<td>0x3950</td>
<td>0xFB00</td>
<td>3D0400</td>
</tr>
<tr align="center">
<td>0F3000</td>
<td>Item Stolen/Dropped</td>
<td>4</td>
<td>0x600</td>
<td>0x800</td>
<td>3C0C00</td>
</tr>
<tr align="center">
<td>0F0000</td>
<td>Monster Stats</td>
<td>32</td>
<td>0x3000</td>
<td>0x4000</td>
<td>31C000</td>
</tr>
<tr align="center">
<td>0F3D00</td>
<td>Control commands</td>
<td>4</td>
<td>0x600</td>
<td>0x800</td>
<td>3C0000</td>
</tr>
<tr align="center">
<td>0F4300</td>
<td>Sketch commands</td>
<td>2</td>
<td>0x300</td>
<td>0x400</td>
<td>3C0800</td>
</tr>
<tr align="center">
<td>127000</td>
<td>Monster/Esper visual specs</td>
<td>5</td>
<td>0x820</td>
<td>0xAA0</td>
<td>319D80</td>
</tr>
<tr align="center">
<td>0F37C0</td>
<td>Monster special attacks appearance</td>
<td>1</td>
<td>0x180</td>
<td>0x200</td>
<td>3C2800</td>
</tr>
</table>
Relocalization and expansion ASM changes:
Code:
hirom
; Monster visual specs
org $C1206E
LDA $F19D82,X
org $C1208C
LDA $F19D80,X
org $C12099
LDA $F19D81,X
org $C120A2
LDA $F19D82,X
org $C120B7
LDA $F19D84,X
; Monster visual specs
; used for sketch and espers
org $C124FF
LDA $F19D82,X
org $C1250E
LDA $F19D80,X
org $C1251B
LDA $F19D81,X
org $C12524
LDA $F19D82,X
org $C12539
LDA $F19D84,X
; Esper numbers
; we add 0x80 to each espers number to get the good visual specs at the end of expanded monsters.
; Crusader
org $C12469
LDX #$020F
; some esper numbers table
org $C2EA9D
dw $0202
dw $0211
dw $0207
dw $0213
dw $0204
; following are each espers
org $C2EB52
LDX #$020F
org $C2EB69
LDX #$021C
org $C2EBC2
LDX #$021B
org $C2EBE1
LDX #$0214
org $C2EBEE
LDX #$020A
org $C2EC01
LDX #$020C
org $C2EC1C
LDX #$0210
org $C2EC29
LDX #$0216
org $C2EC36
LDX #$0208
org $C2F020
LDX #$0218
org $C2F073
LDX #$020B
org $C2F08E
LDX #$0209
org $C2F0C1
LDX #$0206
org $C2F0E2
LDX #$020D
org $C2F0F9
LDX #$0219
org $C2F109
LDX #$0215
org $C2F119
LDX #$021A
org $C2F129
LDX #$0217
org $C2F14D
LDX #$0211
org $C2F16B
LDX #$0213
org $C2F195
LDX #$020E
org $C2F203
LDX #$0203
org $C2F211
LDX #$0202
org $C2F221
LDX #$0200
org $C2F231
LDX #$0212
org $C2F24D
LDX #$0207
org $C2F27B
LDX #$0205
org $C2F289
LDX #$0201
; monster special move graphics
org $C22D4F
LDA $FC2800,X
; monster special move graphics
; rage purpose
org $C20616
LDA $FC2800,X
; monster data
org $C20625
LDA $F1C01A,X
org $C22CA3
LDA $F1C005,X
org $C22CAA
LDA $F1C00C,X
org $C22CB1
LDA $F1C00E,X
org $C22CBD
LDA $F1C00A,X
org $C22CC7
LDA $F1C008,X
org $C22CF5
LDA $F1C001,X
org $C22CFC
LDA $F1C01A,X
org $C22D03
LDA $F1C003,X
org $C22D0D
LDA $F1C004,X
org $C22D17
LDA $F1C002,X
org $C22D1E
LDA $F1C010,X
org $C22D25
LDA $F1C000,X
org $C22D2C
LDA $F1C007,X
org $C22D36
LDA $F1C01E,X
org $C22D42
LDA $F1C013,X
org $C22DC2
LDA $F1C01F,X
org $C22DC9
LDA $F1C019,X
org $C22DD3
LDA $F1C016,X
org $C22DE9
LDA $F1C01B,X
org $C22DF0
LDA $F1C01D,X
org $C22E10
LDA $F1C01C,X
org $C22E1A
LDA $F1C014,X
org $C22E27
LDA $F1C017,X
org $C22E31
LDA $F1C011,X
; control commands
org $C2063D
LDA $FC0000,X
org $C20643
LDA $FC0002,X
org $C23758
LDA $FC0000,X
; sketch commands
org $C23B5A
LDA $FC0800,X
; item dropped
org $C25F2D
LDA $FC0C02,X
; item stolen
org $C22C41
LDA $FC0C00,X
; monster AI script
org $C21A44
LDA $FD0400,X
org $C21A64
LDA $FD0402,X
org $C22D78
LDA $FD0000,X
org $C22D88
LDA $FD0400,X
; monster AI pointer
org $C21A6B
LDA $FD0400,X
; monster names (same as vanilla)
; for reference purpose
org $C22C56
LDA $CFC050,X
org $C22C78
CMP $CFC050,X
; rage names (monster names)
org $C3540E
LDY #$C050
org $C35413
LDA #$CF
; monster special attack names
org $C1973B
LDA #$FC
org $C1974F
ADC #$1400
; Monster Y-Shift for Sprite Priority (added on 2023/02/23)
; org $C12150
; LDA $CF3600,X ; to be changed
The following 5 users say Thank You to madsiur for this post:
• Gi Nattak (07-03-2019), Jeff (03-15-2015),ReturnerScum (01-18-2016), Robo Jesus (05-02-2015), SSJ Rick (03-08-2015)
• Gi Nattak (07-03-2019), Jeff (03-15-2015),
« Next Oldest | Next Newest »
|
||||
Users browsing this thread: 1 Guest(s)