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 ... 64
1
I guess I expected too much of the memory layout to change between battle and overworld.
Since everything is allocated statically, the memory layout is always the same.
2
I'm unsure what the data at DF00 is for, but you might need to run it (and not just place the values) as it might not be automatic without the OAM DMA hijacking. This involves modifying FF80 first (in which placing C3 00 DF there might work even though it breaks the overworld sprites).
I've explained several times what the correct way of doing DMA hijacking is already; don't you read my posts?!? Sorry to be aggressive, but it's frustrating to repeat myself on a trivial thing.
To have OAM DMA hijacking, you need to replace the initial
Code: [Select]
ld a, HIGH(wShadowOAM) ; wShadowOAM is the game's OAM buffer, in RBY's case: $C100
ldh [rDMA], a
into
Code: [Select]
call DMAHook ; $DF00 here
ld [$ff00+c], a
and have the hook routine return with a = HIGH(wShadowOAM) (here $C1) and c = LOW(rDMA) ($46)
3
Forum Announcements / Re: Decluttering stickies
« on: August 03, 2018, 07:05:43 am »
Nothing really to say. Don't disagree, but I'm not very involved with this site. (I will read further replies, but may not react if I have nothing to say)
4
Code: [Select]
FA EF C0
CD 25 DF
28 05
3E 00
EA EF C0
EA 09 DF

FA F0 C0
CD 25 DF
28 05
3E 00
EA F0 C0
EA 09 DF

0E 46
3E C1
C9

FE 02
C8
FE 08
C8
FE 1F
C9

I tried this the other day into the BGB memory editor and it did nothing. That's what values I put in $DF00 if the spaces were right.
Did you also set up DMA hijacking?


DMA hijacking is a fairly recent concept, although it's less recent than the recent GlitchDex effort.
As for sprite dumping, it may be possible to dump VRAM or SRAM to get what would be displayed as the sprite if a crash didn't occur after.
5
Keep in mind the disasm is extremely WIP. May be worth to check out shim.sym if they didn't remove it already.
6
Computers and Technology Discussion / Re: Literally random videos
« on: August 01, 2018, 04:08:59 am »
fun
7
Pokémon Glitch Discussion / Re: Gen 2 Leak's Version Of MISSINGNO.
« on: August 01, 2018, 04:07:40 am »
<insert pun about thinking gay>
8
Pokémon Glitch Discussion / Re: Gen 2 Leak's Version Of MISSINGNO.
« on: July 30, 2018, 11:21:14 pm »
Note that empirical testing = corrupting RAM randomly here.
9
Pokémon Glitch Discussion / Re: Gen 2 Leak's Version Of MISSINGNO.
« on: July 30, 2018, 08:45:56 pm »
Maybe we're better, but we're also fairly inactive. I have my hands full with gb-asm-tutorial, Aevilia's rewrite, and my studies. So I'm not a big help, therefore yours is welcome anytime.
Anytime!
10
I think there's a function that waits for a button press before closing the textbox.
11
Using `C3` is wrong, because this is a jp instruction which does not return to the DMA routine and therefore fails to perform OAM DMA. Use the byte `CD` to instead encode a `call` instruction, which you then follow with `ld [c], a`.

Be very careful when writing to this region, because modifying one byte at a time will crash the game, most certainly. Write a `ret` (C9) at the beginning of the routine to neutralize it (note that this will break sprites temporarily), and write the CD byte last of the 4 "patch" bytes.
12
Pokémon Glitch Discussion / Re: Gen 2 Leak's Version Of MISSINGNO.
« on: July 29, 2018, 10:59:59 am »
By the way, please do not use VBA.
13
You must use either BGB's debugger or an in-game memory editor to put either the code or the bytecode at $DF00, then set up DMA hijacking to point to $DF00 (call $DF00 then ld [c], a)
14
Hey!

Sound banks seem as (un)reliable in R/B as in Yellow. If they seem less vulnerable, the reason is unrelated.

Np, 8F cannot freeze the addresses. However, if OAM DMA is called before the audio code, it would be possible to use DMA hijacking to fix the sound banks.
And it appears that it IS the case!
Here's some code to fix the banks. It uses SMC to store the value of the last valid sound bank, and if the sound bank is invalid, then it restores it.
Note that this code MUST be placed at $DF00, otherwise it will NOT work properly.
Code: [Select]
  ld a, [$C0EF] ; wAudioROMBank
  call .checkBank
  jr z, .bankOK
  ld a, 0 ; @DF08
  ld [$C0EF], a
  ; Writing again is fine, it's a no-op and save instructions
.bankOK
  ld [$DF09], a ; Modify ld instruction to save value

  ld a, [$C0F0] ; wAudioSavedROMBank
  call .checkBank
  jr z, .savedBankOK
  ld a, 0 ; @DF18
  ld [$C0F0], a
.savedBankOK
  ld [$DF19], a

; Set up vars for transfer
ld c, $46
ld a, $C1
ret

.checkBank ; $DF25
  cp 2 ; BANK(Audio1_UpdateMusic)
  ret z
  cp 8 ; BANK(Audio2_UpdateMusic)
  ret z
  cp $1F ; BANK(Audio3_UpdateMusic)
  ret
I may have gotten some addresses wrong, but I think I did OK. Here's the bytecode:
Code: [Select]
FA EF C0
CD 25 DF
28 05
3E 00
EA EF C0
EA 09 DF

FA F0 C0
CD 25 DF
28 05
3E 00
EA F0 C0
EA 09 DF

0E 46
3E C1
C9

FE 02
C8
FE 08
C8
FE 1F
C9


Glad to see someone use BGB, FINALLY!
15
General Discussion / Re: The Glitchy Thread of Topiclessness (#3)
« on: July 19, 2018, 02:39:50 am »
Can't have a game called "Poison", that's a swear word.
...What?
Pages: [1] 2 3 ... 64