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 ... 49
1
No problem. Not every address can be represented with Echo Ram though. Thankfully, the main ones (Pokemon data,item data,etc.) are in ECHO Ram somewhere. I have yet to find an echo ram map, however.

Someone correct me if i'm wrong, but I believe any address from $d000 - $dfff is in echo ram somewhere.

Nice, thanks.  :)
Echo RAM is a quirk of the GB's hardware ; tl;dr : WRAM (the RAM mapped to C000-DFFF) is mirrored in range E000-FDFF, meaning accessing FAB0 (both reading and writing) is the same as accessing DAB0 !
The downside is that DE00-DFFF can't be accessed through Echo RAM (FEXX and FFXX are mapped to other things), but that doesn't really matter most of the time (stack space occupies DFXX, and DEXX isn't important afaik).

Also, VBA doesn't emulate Echo RAM.
VBA sucks.
2
I'm just wondering, but did you make the game recalculate the stats ? AFAIK that's doable by both depositing then withdrawing (not sure about Move w/o mail), or leveling up.
3
Pokémon Discussion / Re: 4 questions about Pokérus mechanics
« on: October 17, 2017, 06:07:51 am »
No, it's not getting smaller and smaller. As strange as it may sound, it's actually growing.

As for Torchickens and Metarkrai, you more or less hit the wrong choices : both of them are currently busy with their lives, and thus not available here.

The actual issue, imo, is a kind of fatigue. We're getting the same questions too often, and... well, every time I see a question on the forums, I feel a kind of laziness.

There's probably also that, though I said the community is a growing, it's growing too slowly for there to be a "replacement" effect, and many are moving on to other domains.



I dunno. The community is certainly not dead, but yeah, less open, I guess.
4
`call Random` each time. Far from perfect due to the way the game's RNG is implemented, but it should suffice.
5
https://github.com/pret/pokecrystal/blob/master/sram.asm#L58

Apparently modifying 0:ABE2 is enough to make the mystery gift guy appear.
https://github.com/pret/pokecrystal/blob/f0209d6ed6a0cd0e759dff49bdfe4d8171229c29/engine/specials.asm#L318
I don't think the address is checksummed.

(There's also the flag EVENT_RECIEVED_BALLS_FROM_KURT that's involved, so... maybe it won't always suffice ?)
6
I checked a bit, and there doesn't seem to be a memory address that does what D059 does.
Wild battles are handled by map script, Trainer & scripted battles by directly calling StartBattle.

Maybe there's an entry point, but I doubt it.
7
Padding is what makes Microsoft and Apple products inferior.
Simple answer? Don't.
Problem is, padding is almost always required when writing 8F setups - quantities are free, items aren't.
Also, performance is way not an issue here.

The code works perfectly fine as written, the only problem is I've been attempting to add padding (useless filler to prevent glitch items) to the code, but I can't seem to figure out how I would go about padding this script. Every time I add padding to fix one problem, another arises, and it's frustrating because I want to finish this soon.
The biggest issue with padding is that it is very situational. I came up with a very large setup, which thus doesn't fit in the bag, so it's split across the bag and the PC.

In your bag :
Code: [Select]
8F
Any item
Antidote x14
Great Ball x13
Ice Heal x65
Parlyz Heal x5
Awakening x178
Thunderstone x59
TM13 x233

In your PC :
Code: [Select]
TM05 x175
Fire Stone x12
TM42 x87
TM03 x55
Antidote x5
Protein x61
Rare Candy x241
Poké Ball x37
Soda Pop x40
Burn Heal x21
Calcium x21
Moon Stone x32
TM30 x7
Awakening x100
Thunderstone x72
Lemonade x233
Poké Ball x24
TM20 x[Any qty]

Also this setup was pretty neat, since it made me find out 4 different bugs in GBz80 to Items. Always grinding for improvements !
(If you want to know, the four bugs were : AND, OR, XOR and CP breaking the label system ; missing "ld a, (FF00+c)" and vice-versa ; incorrect opcode selection for CB instructions ; incorrect jr offset calculation)


Source code :
Code: [Select]
; In the bag (loader code)

dec bc ; Padding
ld c,3
dec c ; c = 2
dec c ; c = 1
ld b, c ; b = 1
rrca ; Padding
dec b ; b = 0

ld c, $B2 ; To be able to use ($FF00+c)
ld hl, $D53B
jp hl


; In the PC (@D53B)

start:
call $20AF ; DelayFrame
inc c ; Padding
ld a,(FF00+c)
ld d, a
swap a
dec bc ; Padding
dec b
inc h ; Padding
dec a
jr z,start ; If the player released Left, then restart with b decremented once
inc b
dec h ; Padding
dec a
jr z,right
dec d
daa ; Padding
dec d
ld a, (bc) ; Padding
jr nz,start

rlca ; Padding
ld c,$64
ld hl, $3e48 ; GivePokemon
jp hl

right:
inc b
jr start
8
Oh, yeah sure 'bout VC and VBA not being exactly the same. I hate them both with burning passion, though :D
Also VC works right enough that it doesn't break any glitches afaik (the worst that could happen, I think, was if a glitch ran code from SRAM). As far as the other side is concerned, SatoMew pretty much nailed the point : they are emulation errors.
9
Generation II Glitch Discussion / Re: Friend Ball glitch
« on: October 04, 2017, 04:07:36 pm »
Yes !






...
If you had no Pokémon in your current box prior to catching the Pokémon !
10
Generation II Glitch Discussion / Re: Friend Ball glitch
« on: October 04, 2017, 05:39:35 am »
The bug still is in the source of French Pokémon Crystal, though ; the offending write is in the ROM at 3:6B39. (The SRAM addresses are all exactly the same)
11
I would actually say that. The VC's emulation is indeed at the same level as VBA - even VBA does things the VC cannot be bothered to do.
Then, remember that the VC is just an emulator. Saying "VC ignores invalid opcodes so it's easier for ACE" doesn't make sense. Imagine Nintendo ported VBA to 3DS, added Echo RAM, and used that as the VC. It would still be a crappy emulator.
Point is, since it's an official Nintendo emulator, everybody seems to think the everything happening under the VC has an "official behavior" seal.
I very strongly disagree with this.
12
What do you mean by "so it does" ?
Also ACE cannot modify code. That had been brought up before, but it's all the NOPE.
It can if its in the ram.
None of the game's code is in RAM, except for a small routine that does nothing but wait. So, still, nope.
13
What do you mean by "so it does" ?
Also ACE cannot modify code. That had been brought up before, but it's all the NOPE.
14
As luckytyphlosion pointed out above (but somehow we completely missed it until yesterday night), the above trick will not work on VC.
(Because for some reason, it appears that trying to execute from *unlocked* SRAM still returns FFs, leading to 0039 crashes)

Crystal_ worked out a fix, though :
- Replace the "Ae" in box names with "4A".
- Have a Quagsire holding HP Up with Sleep Talk as its first move (this should be the second Quagsire in the party).
- Keep the same item setup in the PC, but put an extra [Any item] x[Any qty] before everything else.

Explanation :
- "4A" redirects execution to the 3rd Party Pokémon's data.
- Quagsire w/ HP Up & Sleep Talk redirects to PC Item 2 qty (unlike the "Ae" method which goes to item 1 qty).
- We mostly rejoin the non-VC route. Good thing it emulates Echo RAM, otherwise German and French VC would be in big trouble.



15
Another update : the box names are actually version-dependent, due to charset differences.
Crysta_ and I worked out setups for all four localizations, see below for your language.

Names for the Spanish and Italian versions :

Code: [Select]
nop | ld d, b ; box 2 terminator
or $a4
and $a4
push af
pop hl
or $d0
ld d, b ; 0x50
and $d0
call nc, A480
ld d, b ; 0x50

Names for the French version :

Code: [Select]
ld d,b
or $A4
and $A4
push af
pop hl
; $A4
or $F1
; $F5
ld d,b
; $F5
and $D8
; $D0
cp $FE ; To set the carry
call c, A480
ld d,b

Names for the German version :

Code: [Select]
ld d,b
or $A4
and $A4
push af
and $80
or $50
pop hl
call nz, A480
ld d,b
Pages: [1] 2 3 ... 49