#176450 - GLaDOS - Fri Jul 29, 2011 5:45 am
According to Dwedit, my game fails to run on NO$GBA but works on VBA. What are the differences between emulators that cause a game to fail on one particular version? How can I fix it?
Code: |
080030ec <__aeabi_ldivmod>: 80030ec: e3530000 cmp r3, #0 80030f0: 03520000 cmpeq r2, #0 80030f4: 1a000006 bne 8003114 <__aeabi_ldivmod+0x28> 80030f8: e3510000 cmp r1, #0 80030fc: 03500000 cmpeq r0, #0 8003100: b3a01102 movlt r1, #-2147483648 ; 0x80000000 8003104: b3a00000 movlt r0, #0 8003108: c3e01102 mvngt r1, #-2147483648 ; 0x80000000 800310c: c3e00000 mvngt r0, #0 8003110: ea001463 b 80082a4 <____aeabi_ldiv0_from_arm> 8003114: e24dd008 sub sp, sp, #8 8003118: e92d6000 push {sp, lr} @This is strange, why does it save the stack pointer? 800311c: eb001473 bl 80082f0 <____gnu_ldivmod_helper_from_arm> 8003120: e59de004 ldr lr, [sp, #4] 8003124: e28dd008 add sp, sp, #8 8003128: e8bd000c pop {r2, r3} 800312c: e12fff1e bx lr @dies here after it returns to an invalid address. ... 0800317c <__gnu_ldivmod_helper>: 800317c: b5f0 push {r4, r5, r6, r7, lr} 800317e: b083 sub sp, #12 8003180: 1c1d adds r5, r3, #0 8003182: 1c14 adds r4, r2, #0 8003184: 9000 str r0, [sp, #0] 8003186: 9101 str r1, [sp, #4] 8003188: f001 f832 bl 80041f0 <__divdi3> 800318c: 1c06 adds r6, r0, #0 800318e: 1c0f adds r7, r1, #0 8003190: 1c32 adds r2, r6, #0 8003192: 1c3b adds r3, r7, #0 8003194: 1c29 adds r1, r5, #0 8003196: 1c20 adds r0, r4, #0 8003198: f7ff ffca bl 8003130 <__aeabi_lmul> 800319c: 9a00 ldr r2, [sp, #0] 800319e: 9b01 ldr r3, [sp, #4] 80031a0: 1a12 subs r2, r2, r0 80031a2: 418b sbcs r3, r1 80031a4: 9908 ldr r1, [sp, #32] @reads the previous stack pointer 80031a6: 600a str r2, [r1, #0] 80031a8: 604b str r3, [r1, #4] @clobbers the return address and replaces it with 00000000 80031aa: b003 add sp, #12 80031ac: 1c30 adds r0, r6, #0 80031ae: 1c39 adds r1, r7, #0 80031b0: bcf0 pop {r4, r5, r6, r7} 80031b2: bc04 pop {r2} 80031b4: 4710 bx r2 80031b6: 46c0 nop ; (mov r8, r8) |
GLaDOS wrote: |
According to Dwedit, my game fails to run on NO$GBA but works on VBA. What are the differences between emulators that cause a game to fail on one particular version? |
GLaDOS wrote: |
How can I fix it? |
Code: |
.text .align .pool .global __aeabi_ldivmod .global __aeabi_uldivmod __aeabi_ldivmod: cmp r3, #0 cmpeq r2, #0 bne 0f cmp r1, #0 cmpeq r0, #0 movlt r1, #-2147483648 @ 0x80000000 movlt r0, #0 mvngt r1, #-2147483648 @ 0x80000000 mvngt r0, #0 b __aeabi_ldiv0 0: sub sp, sp, #8 mov r12,sp push {r12, lr} bl __gnu_ldivmod_helper ldr lr, [sp, #4] add sp, sp, #8 pop {r2, r3} bx lr __aeabi_uldivmod: cmp r3, #0 cmpeq r2, #0 bne 0f cmp r1, #0 cmpeq r0, #0 mvnne r1, #0 mvnne r0, #0 b __aeabi_ldiv0 0: sub sp, sp, #8 mov r12,sp push {r12, lr} bl __gnu_uldivmod_helper ldr lr, [sp, #4] add sp, sp, #8 pop {r2, r3} bx lr |