Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - ISSOtm

Pages: [1] 2 3 ... 43
There is, if you override the map's script and re-set the battle types to "wild". I think. I'm not sure how it's set but I think that's how.
Tech Help / Re: Perfect opportunity
« on: Today at 07:57:39 am »
somehow install a9lh or b9 on it, then open devmenu or however this shits is called and the next time an employee looks at it, accuse him of being a filthy pirate
Things that don't require large amounts of alerting-the-employees.
There is a way to start a battle directly, but it's pointless to try nesting battles since the nested battle will overwrite the data for the nesting battle. So you'll end up finishing the nested battle twice.
The 3-Pokémon setup does jump to $D322, but it does so by directly writing the jump instruction, therefore leaving hl pointing at the party count (D1idon'tremember instead of D322)

Actually processing text shouldn't be too hard, you just have to call a proper offset, but figuring out what the hell to do was the hardest thing I ever did in this game.
Tech Help / Re: Perfect opportunity
« on: Yesterday at 04:43:34 pm »
Pour a bucket of water on it.
1. I don't know. What's consistent, however, is the value of hl, because what most bootstraps essentially do is
Code: [Select]
ld hl, $D322
jp [hl]
(Most is actually "all but the glitched 3-Pokémon setup")

2. That's because codes interface with the game's engine. The way wCurOpponent works in the overworld is : if on one frame in the overworld, this value is non-zero, the game starts a battle with wCurOpponent as the opponent's ID. Thus, we write to that address, close the menu, and on the overworld frame that follows the menu's closing, the game starts the battle.

3. There are but OH BOY IT'S s**t. This game's text engine is a NIGHTMARE. I'd have to look back a bit at it (I had researched it for my SRAM hack), because it's very not obvious what you have to do. Give me a moment. A long one.

4. There's none, because the game's programming doesn't allow going past 99 ($63) items. Using DMA hijacking it may actually be possible, but good luck on this one.
Though I wouldn't trust the value of b, because mainly of the 6-Pokémon setup.
Yeah, there's an error in Torchicken's post : the Yellow setup modifies party Pokémon #1.
I think it's possible. No-one has done it so far, though.
Are you using R/B or Yellow ?
forsyz, are you using the US versions ?
Thing is, I actually never read a single GB tutorial. I actually started with programming on the TI 83+, which has the z80 processor. When I approached the GBz80, I understood it as a z80 stripped of a bunch of its instructions and with a few extra ones. Thus, I can't give you such a link. It will depend on what you need.

The custom language file is attached to this post. To install it :
  • Language -> Define you language...
  • Import... -> Select GBz80.xml
  • Close the pop-up
  • "GBz80" will be present at the bottom of the Language menu
    (Note : I configured it to be the language associated with .asm and .inc files)

BGB can't speed-up as much as, say, VBcrap, because it is less optimized. This is a consequence of better accuracy. It's a complicated topic. I got it speed up by 5x.

Now, there's just something I don't understand. What is wrong with the hex viewer panel ? The one under the code panel. This one shows raw bytes, so that's exactly what you need, yet you don't seem to notice it.
Also, if there is a byte that's misinterpreted in the code panel, note the address of the first byte of the code, hit Ctrl+G, type the address, and go. This will force BGB to interpret that byte as the first byte of an instruction. This doesn't work perfectly and may require some fiddling, but it's better than nothing.

You don't need to add a header. BGB will load even badly malformed ROMs (just telling you OH MY GOD WHAT THE f**k in the middle of the loading), and if you just put the code at $0000 it will show up at the first address in the ROM. So lol.
I'll maybe add a raw hex output to GBz80 to Items, but currently nobody requests it (aside from you and someone else) and I'm already programming something else, so I don't have a lot of time. tl;dr : I'll maybe add it, but it's not on my priority list.

The placeholder used classically is "inc b", but then there are a couple others. When you need a "filler" byte, check which registers aren't locked-up, and use an instruction that trashes another one. rlca, scf, etc. Second possibility is to use 3-bytes instructions, mostly 16-bit loads. The sky number of instructions is the limit !
Emulation & ROM Hacking / Re: Why i hate BGB
« on: July 20, 2017, 09:02:12 am »
How accurate is it ? Which test ROMs pass ?
Heya ! I'm the guy who wrote GBZ80 to Items.

The only real way of doing ASM -> hex is to use a bit of compiler, since .gb/.gbc files are just hex dumps of the ROM.
The way I do it when I need some quick and dirty stuff is using BGB's code editor, or the Big HEX List when items are also needed. (When developing 8F codes, it's not considered good practice to force the user to have invalid items, but invalid quantities are fine)

BGB has the "Run" menu, which I often use with "Call cursor" (allows calling a function easily). It also has "jump to cursor", "step" (single-step instruction), "run to next line" (single-step except if it's a call, which is entirely run), etc. It's AWESOME.

If you want to get into 8F/ws m, it's a good idea to be in touch with GB programming. I recomment Avivace's Awesome-GBDev list, which has some very good tutorials on how to program for the GB. This will help you learning the GBz80's assembly, which is very similar to the z80's, btw)
It also links to RGBDS, which is in my opinion the best platform to compile GBz80 assembly.

The "8F compatibility" list doesn't exist, but I can either suggest going the automatic way with GBz80 to Items (I recommend v3 'cause it's simpler to use, but I also have an English version of v2 lying around somewhere), or you can use the Big HEX List (link in the sidebar under "References")

To get the comprehensive list of RAM addresses, check out Datacrystal (link extracted from Flandre Scarlet's post). For the FULL list, go check out Pokéred (again, from Flandre Scarlet's), and more specifically the wram.asm file

My workflow for testing the code :
1. Write it (I use Notepad++ with a custom language on Windows, and gedit with a custom language on Linux)
2. Compile it with RGBDS or the Big HEX List, I use the latter out of old habit but you might prefer the first
3. Extract the hex
4. Paste it into your inventory with BGB
5. Save state
6. Run, maybe trace execution to check if all goes fine (#BGBsDebuggerIsMyWai)
7. If needed, load state, refine code, retry
8. Use GBz80 to Items to compile code into items
9. Publish (Using Firefox, this is totally not a product placement)

Okay, that was a huge post. But hopefully it will explain everything you need to know - oh right, I forgot : pokered is made to be compiled with RGBDS. Just so you know, that's the RGBDS syntax.

PS : I really recommend you read a tutorial on GB Dev, because that will explain how the Game Boy works, which imo is essential to understanding some things when toying with 8F/ws m.
Pokémon Discussion / Re: Brick the save file in R/B/Y GLITCHLESS
« on: July 18, 2017, 12:52:09 pm »
Method 3 is also defeated by trading a Pokémon that knows Teleport or Dig, if you didn't heal at Cinnabar.

I'll add a quick method to softlock even though it's not glitchless :
1. Don't obtain the badges for Surf or Fly
2. Use WTW to go to Cinnabar
3. Heal there
4. Drop any method of enabling WTW again (such as the required items for 8F/ws m)
You are now stuck ! :D
According to Aera, if the "Pokémon League" locations play the Pokémon Centre theme, it's all righty. You can do a BSoD test just to be sure.
Also the Jubilife-s are normal.
Pages: [1] 2 3 ... 43