Early card irq patch

From Final Fantasy Hacktics Wiki
Jump to navigation Jump to search

0002891c: 3c018003 lui r1,0x8003
00028920: ac3f29d0 sw r31,0x29d0(r1)
00028924: 0c00880d jal 0x00022034                Enter Critical Section
00028928: 00000000 nop
0002892c: 240a00b0 addiu r10,r0,0x00b0
00028930: 0140f809 jalr r10,r31                  get C0 table
00028934: 24090056 addiu r9,r0,0x0056
00028938: 8c420018 lw r2,0x0018(r2)              C(06)h jump address (exception handler)
0002893c: 00000000 nop
00028940: 8c430070 lw r3,0x0070(r2)              \
00028944: 00000000 nop
00028948: 3069ffff andi r9,r3,0xffff               get early card IRQ handler
0002894c: 8c430074 lw r3,0x0074(r2) 
00028950: 00094c00 sll r9,r9,0x10
00028954: 306affff andi r10,r3,0xffff            / IRQ 
00028958: 012a1821 addu r3,r9,r10
0002895c: 3c0a8003 lui r10,0x8003                
00028960: 3c098003 lui r9,0x8003
00028964: 24620028 addiu r2,r3,0x0028
00028968: 254a88c4 addiu r10,r10,0x88c4          new data = 0x800388c4
0002896c: 252988d8 addiu r9,r9,0x88d8            new data end = 0x800488d8
00028970: 8d430000 lw r3,0x0000(r10)             load first byte at new data address
00028974: 254a0004 addiu r10,r10,0x0004
00028978: 24420004 addiu r2,r2,0x0004
0002897c: 1549fffc bne r10,r9,0x00028970         copy data from RAM to early IRQ handler + 0x28
00028980: ac43fffc sw r3,-0x0004(r2)             store
00028984: 3c018003 lui r1,0x8003
00028988: 0c0087c9 jal 0x00021f24                FlushCache
0002898c: ac2229d4 sw r2,0x29d4(r1)
00028990: 3c1f8003 lui r31,0x8003
00028994: 8fff29d0 lw r31,0x29d0(r31)
00028998: 00000000 nop
0002899c: 03e00008 jr r31
000289a0: 00000000 nop