If the Return/Goto stuff worked that would be ideal for this. I haven't tested them myself yet so I can't show you how to use them.
However, I'll show you how to do it with other codetypes.
From what I gathered, this is the structure you're going for:
Load Pointer
if( pointer valid )
{
if( [pointer]==0xA ) //check value = 10
{
14000004 00000001 //write 1
if( [283CC200]==0x182 ) //16 bit check IF 803CC200 = 0x0182
{
14000000 00000005 //write 5
}
else if( [283CC200]==0x184 ) //16 bit check IF 803CC200 = 0x0184
{
14000000 0000000A //write 10
}
else if( [283CC200]==0x181 ) //16 bit check IF 803CC200 = 0x0181
{
14000000 00000007 //write 7
}
}
}
I'll show you how to do else if for that ^
If that's not quite correct, just let me know and I'll make the appropriate changes.
There IS an end if +else codetype but I've never used it.. This is what it would look like using that (As far as I can tell!):
* 48000000 80CC1824 //load into pointer
* 4A100000 FFFFFFD8 //set pointer to -28
* DE000000 80008180 //check pointer
* 30000000 0000000A //check value = 10
* 14000004 00000001 //write 1
* 283CC200 00000182 //16 bit check IF 803CC200 = 0x0182
* 14000000 00000005 //write 5
# E2100001 00000000 //end 1 if, don't change ba and po, inverse code execution (else)
* 283CC200 00000184 //16 bit check IF 803CC200 = 0x0184
* 14000000 0000000A //write 10
# E2100001 00000000 //end 1 if, don't change ba and po, inverse code execution (else)
* 283CC200 00000181 //16 bit check IF 803CC200 = 0x0181
* 14000000 00000007 //write 7
* E0000000 80008000 //full terminator
I have a really strong feeling that the else lines right there ^ should NOT be applying an endif... so instead, they would need to look like this: E2100000 00000000
I don't know though
If you test that last one out there, please let me know how it seems to work.