Conversation Between Blah and robinjea
Showing Visitor Messages 16 to 30 of 37
-
November 5th, 2015 7:07 PMBlahOh, let the Berry system sit out for a while. I'll make a better one in the near future. The current one, there is a small bug with a rountine's execution, and I've been too lazy to fix it because I've been telling myself a better version will be created :P
-
November 5th, 2015 6:43 PMrobinjeaHey FBI~ I tried your Berry System in Fire Red hack but unfortunately, it freezes (locks up everyone's movements but the music still plays) the moment I talk to the "loamy soil". Do you have any idea why? I mean I did everything exactly as you said in the post with the Berry Bag Hack and Saveblock Hack, the scripts and all. -n-
-
October 23rd, 2015 6:04 PMBlahYou need to use the partyswap routine inbetween
-
October 23rd, 2015 5:23 PMrobinjeaHello FBI. Hahaha. I've been bugging you endlessly lately. I've got a question about your PSS. First, here's my script.
Spoiler:#dynamic 0x800000
#org @phase1
lock
faceplayer
msgbox @Text1 0x6
goto @phase2
end
#org @phase2
preparemsg @Text2
multichoice 0x0 0x0 0x(multichoice_ID) 0x0
compare 0x800D 0x0
if 0x1 goto @Withdraw1
compare 0x800D 0x1
if 0x1 goto @Deposit1
compare 0x800D 0x2
if 0x1 goto @Swap1
compare 0x800D 0x3
if 0x1 goto @Purge1
compare 0x800D 0x4
if 0x1 goto @PurgeAll1
compare 0x800D 0x5
if 0x1 goto @Info1
release
end
#org @Text1
= Welcome to the Pokémon Storage\nSystem!
#org @Text2
= What would you like to do?
#org @Withdraw1
copybyte 0x20370D0 0x203C000
compare 0x800D 0x0
if 0x1 goto @Withdraw2
countpokemon
compare 0x800D 0x6
if 0x1 goto @Withdraw3
setvar 0x8000 0x0
msgbox @WithdrawText1 0x2
special 0x9F
waitstate
compare 0x8004 0x6
if 0x4 goto @phase2
callasm 0x71FDA1
msgbox @WithdrawText2 0x6
goto @phase2
end
#org @Withdraw2
msgbox @WithdrawText3 0x6
goto @phase2
end
#org @Withdraw3
msgbox @WithdrawText4 0x6
goto @phase2
end
#org @WithdrawText1
= Which Pokémon would you like to\nwithdraw?
#org @WithdrawText2
= Pokémon successfully withdrawn!
#org @WithdrawText3
= Pokémon Storage System is\ncurrently empty.\pDeposit a Pokémon first.
#org @WithdrawText4
= Your party is full!
#org @Deposit1
copybyte 0x20370D0 0x203C000
compare 0x800D 0x6
if 0x1 goto @Deposit2
setvar 0x8000 0x1
msgbox @DepositText1 0x2
special 0x9F
waitstate
compare 0x8004 0x6
if 0x4 goto @phase2
callasm 0x71FDA1
msgbox @DepositText2 0x6
goto @phase2
end
#org @Deposit2
msgbox @DepositText3 0x6
goto @phase2
end
#org @DepositText1
= Which Pokémon would you like to\ndeposit?
#org @DepositText2
= Pokémon successfully deposited!
#org @DepositText3
= Pokémon Storage System is\ncurrently full.\pWithdraw a Pokémon first.
#org @Swap1
copybyte 0x20370D0 0x203C000
compare 0x800D 0x0
if 0x1 goto @Swap2
callasm 0x71FEB1
msgbox @SwapText1 0x6
goto @phase2
end
#org @Swap2
msgbox @WithdrawText3 0x6
goto @phase2
end
#org @SwapText1
= Party Pokémon successfully swapped\nwith Storage Pokémon!
#org @Purge1
copybyte 0x20370D0 0x203C000
compare 0x800D 0x0
if 0x1 goto @Purge2
msgbox @PurgeText1 0x2
special 0x9F
waitstate
compare 0x8004 0x6
if 0x4 goto @phase2
callasm 0x71FF61
msgbox @PurgeText2 0x6
goto @phase2
end
#org @Purge2
msgbox @WithdrawText3 0x6
goto @phase2
end
#org @PurgeText1
= Which Pokémon slot would you like\nto purge?
#org @PurgeText2
= Pokémon slot successfully purged!
#org @PurgeAll1
copybyte 0x20370D0 0x203C000
compare 0x800D 0x0
if 0x1 goto @PurgeAll2
msgbox @PurgeAllText1 0x5
compare 0x800D 0x0
if 0x1 goto @phase2
setvar 0x8004 0x6
callasm 0x71FF61
msgbox @PurgeAllText2 0x6
goto @phase2
end
#org @PurgeAll2
msgbox @WithdrawText3 0x6
goto @phase2
end
#org @PurgeAllText1
= Do you want to purge the contents\nof the Pokémon Storage System?
#org @PurgeAllText2
= Pokémon Storage System is now\nempty.
#org @Info1
msgbox @InfoText1 0x6
goto @phase2
end
#org @InfoText1
= The Pokémon Storage System is a\nbrand new storage system that also\lfunctions as a Day-Care System.
Then here's the question: When I select deposit, it shows MY party which is actually correct. But, when I select withdraw or purge slot, it still shows MY party instead of the STORAGE party. Why is that? I'm sure that I inserted the routines correctly because it works, that's the only wrong thing, what it shows me is my party. But when I select withdraw then I select the first slot from my party, it withdraws the first Pokemon in the storage. :( -
October 21st, 2015 5:33 PMrobinjeaOh. I didn't know that. ._. Thanks FBI. You're a big bunch of help. :)
-
October 21st, 2015 4:21 PMBlahRegisters r0-r3 are safe to use if you are not hooking :)
-
October 21st, 2015 3:53 PMBlahRegisters r0-r3 are safe to use if you are not hooking :)
-
October 21st, 2015 12:57 PMrobinjeaWoah woah woah. Wait a minute... It works! Ahhh! Thank you! ^O^ I didn't know the function of mov because I didn't see it in your tut. Nut now I know! I have a question though. You didn't push any register so you didn't pop any of them. Why did it work without pushing registers yet I used two registers? How? I don't understand why. -n-"
-
October 21st, 2015 4:47 AMBlahTry to step through what is happening.
ldr r0, .PLAYER_DATAThis part gets the pointer to the dynamic player data.
ldr r0, [r0]
ldr r1, .PLAYER_DATAHere you once again load the address of the pointer to the player data (this time in R1). Then you load the gender byte into R0.
ldrb r0, [r0, #0x8]
add r0, r0, #0x1 @well, 00 is male and 01 is female so I thought this would be necessaryOK, so you add one to the gender byte as opposed to doing mov rX, #0x1. Which is bad. Then you store this gender-byte +1 in r1 which contains an address to a pointer to the trainer data. You haven't actually written anything into the player data structure.
strb r0, [r1
I know you said you wanted to try it on your own, so I advise you to stop reading the rest of the VM and try it now. I'm going to give you a simple solution incase you wanted reference later on.
Here's a solution:
push {lr}
ldr r0, =(0x300500C)
ldr r0, [r0] @load pointer
mov r1, #0x1
strb r1, [r0, #0x8] @set female
pop {pc} -
October 20th, 2015 9:07 PMrobinjeaOh and hey FBI, I've been trying to make a routine to change the player's gender to female mid-game. Surprise surprise! It doesn't work. -.- Honestly, I'm not even sure if it is possible. Here's my routine which is actually a modified version of HackMew's Secret Trainer ID showing routine from his thread about his knowledge and all.
.textNothing actually happens when I call this though. I need help as always. Just instructions. I really want to learn this one. Thanks! ^_^
.align 2
.thumb
.thumb_func
main:
push {r0-r1, lr}
ldr r0, .PLAYER_DATA
ldr r0, [r0]
ldr r1, .PLAYER_DATA
ldrb r0, [r0, #0x8]
add r0, r0, #0x1 @well, 00 is male and 01 is female so I thought this would be necessary
strb r0, [r1]
pop {r0-r1, pc}
.align 2
.PLAYER_DATA:
.word 0x0300500C -
October 11th, 2015 12:22 PMrobinjeaI'm sorry it took so long. School and stuff plus the internet speed these days. -.- Here it is. https://www.dropbox.com/s/m43qrqhk5fa2j1k/Pokemon%20-%20Fire%20Red%20Version.gba?dl=0
-
October 4th, 2015 6:17 PMBlahPM me the ROM link. I don't wanna download a patcher
-
October 4th, 2015 5:13 PMrobinjeaOoh~ Now I know! Thanks FBI-senpai~ :D
BTW, here's an ips patch where I inserted the HP Regeneration per step Routine at 0x800000 and at 0x6D5F6 is 01 4A 10 47 00 00 01 00 80 08. I'm sorry for bringing this up again and again. I just really need it. :(
https://www.dropbox.com/s/4akhekz67l219xb/FR%20-%20HP%20Regeneration%20Per%20Step.ips?dl=0 -
October 4th, 2015 6:37 AMBlahYou'll have to use one of the built in functions to divide. If you're dividing by powers of two, you can use lsr.
Jambo documented them some ages ago:
DivMod1 (Takes in R0 as Numerator and R1 as Denominator; Returns INTEGER DIVISION (9/2 = 4 r 1) result to R0): 0x1E4018
DivMod2 (Takes in R0 as Numerator and R1 as Denominator; Returns REMAINDER OF INTEGER DIVISION (23/4 = 5 r 3 to R0): 0x1E4684 -
October 3rd, 2015 6:13 PMrobinjeaHahahaha! I love everything you implemented! I just hope you'd share it to the community in the future. :D
Oh and and a quick question. How would I divide two vars using ASM? I tried using div r0, r0, r1 (I was trying to modify your routine here) but the compiler said it was a bad instruction. I researched a little and found that there was no divide instruction in ARM and THUMB and I'm not sure if they're right. How would I divide them? T^T

