icecube Posted June 24, 2014 Share Posted June 24, 2014 New promotion table of FE7. This patch will allow the module to be promotion table editor. Using this patch, each promotion can have its own requirement level. Still, incomplete battle animation of a class will cause a glitch(for example, promoting Druid into Paladin). This patch uses 0xD90000. This module doesn't make an item into a promotion item but change the result of the promotion. Download here Quote Link to comment Share on other sites More sharing options...
Aleph Posted June 24, 2014 Share Posted June 24, 2014 Did this require modifying the assembly code? Perhaps in a way that we can be shown in a spoiler containing the source code? Quote Link to comment Share on other sites More sharing options...
icecube Posted June 24, 2014 Author Share Posted June 24, 2014 (edited) 08027404 00 0608 lsl r0,r1,0x1801 0E00 lsr r0,r0,0x18 //filter the item02 686D ldr r5(r5,0x04)03 792D ldrb r5(r5,0x04)04 490F r1 = 09800054 //this is the new table05 780C ldrb r4(r1,0x00) //let's find our destined pair06 2CFF cmp r4,0xff //the end of the table.07 D017 beq #3208 4284 cmp r4,r0 //let's check our item.09 D001 beq #1210 3104 r1 = r1 + 0x04 //move onto the next pair.11 E7F8 b$ #0512 784C ldrb r4(r1,0x01) //let's check our class13 42AC cmp r4,r514 D000 beq #1615 E7F9 b$ #1016 78CC ldrb r4(r1,0x03) //let's check our level17 0664 lsl r4,r4,0x1918 0E64 lsr r4,r4,0x1919 9801 ldr r0(sp,0x04)20 3008 r0 = r0 + 0x0821 7800 ldrb r0(r0,0x00)22 42A0 cmp r0,r423 DB07 blt #32 //Underleveled. Can't promote24 788C ldrb r4(r1,0x02)25 4806 r0 = 0203A456 //this is the critical slot.26 7004 strb r4(r0,0x00) //store the promotion result here27 78CC ldrb r4(r1,0x03)28 7044 strb r4(r0,0x01) //and your level here (second byte)29 2001 r0 = 0x01 // This means your unit can be promoted.30 E001 b$ #3331 0000 ----32 2000 r0 = 0x00 //any failure goes here33 BC30 pop r4,r534 BC02 pop r135 4708 bx r136 005437 098038 A45639 0203 08029818 00 4900 r1 = 0980000101 4708 bx r102 800103 0980Just jump. 080298C4 00 4F00 r7 = 0980003D01 4738 bx r702 003D03 0980Jump. 09800000 00 B5F0 push r4-r7,lr01 1C04 r4 = r0 + 0x0002 1C10 r0 = r2 + 0x0003 3066 r0 = r0 + 0x6604 7841 ldrb r1(r0,0x01) //see your msb of req. level05 0609 lsl r1,r1,0x1806 2900 cmp r1,0x0007 DB0E blt #23 //jump to #23 if checked08 7800 ldrb r0(r0,0x00) //start of wexp deletion09 2154 r1 = 0x5410 4348 mul r0,r111 4907 r1 = 08BE015C12 1840 r0 = r0 + r113 3004 r0 = r0 + 0x0414 2328 r3 = 0x2815 2B30 cmp r3,0x3016 DA05 bge #2317 5CC1 ldrb r1(r0,r3) //load wexp in class table18 2900 cmp r1,0x0019 D100 bne #2120 54E1 strb r1(r4,r3) //set wexp to 0 if the class doesn't have it.21 3301 r3 = r3 + 0x0122 E7F7 b$ #1523 7800 ldrb r0(r0,0x00) // reload the promotion result24 4901 r1 = 08029821 //go back25 4708 bx r126 015C27 08BE28 982129 0802 0980003C 00 7807 ldrb r7(r0,0x00)01 7809 ldrb r1(r1,0x00)02 1A79 r1 = r7 - r103 2900 cmp r1,0x0004 DA00 bge #0605 2100 r1 = 0x00 //set the value into 0 if less than 006 7001 strb r1(r0,0x00)07 4901 r1 = 080298CD08 4708 bx r109 0000 ----10 98CD11 0802 The only difference between this and the patch is the address. In this case, the table is set at 09800054, 4 byte Edited June 24, 2014 by icecube Quote Link to comment Share on other sites More sharing options...
Aleph Posted June 24, 2014 Share Posted June 24, 2014 (edited) Geez did you write down that disassembly by hand or something? What disassembler are you using? This will still save time for people who are trying to use this source as a basis for stuff (or understanding why it works) but has a ways to go before it's one click away from being turned into a binary patch. I'd be interested to see what solution you come up with on your own for rewriting the source to be capable of that for comparison to existing methods. Edited June 25, 2014 by Aleph Quote Link to comment Share on other sites More sharing options...
icecube Posted June 24, 2014 Author Share Posted June 24, 2014 Yes, before I wrote the code. That helps me a lot when I want to check for error or add other features. I'm using VBA disassembler. Quote Link to comment Share on other sites More sharing options...
Aleph Posted June 25, 2014 Share Posted June 25, 2014 So you're not using an assembler? It doesn't sound like you have any real source code. More like...destination code. Quote Link to comment Share on other sites More sharing options...
icecube Posted June 28, 2014 Author Share Posted June 28, 2014 Update the patch (because of silly bugs when someone interrupt the promotion). Current patch is v3 Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.