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 - bbbbbbbbba

Pages: [1] 2 3 ... 6
One thing I vaguely want to do is to have a table of glitch item effect pointers (ACE or not), and color code it into opcodes, constant operands, pointers, etc. and/or put it side by side with the disassembly (iirc it should fall entirely within the function ItemUseBall). This should illustrate why many glitch items are the way they are, and why they might be different on different language versions.
that'd be kinda cool, actually
I did a quick side-by-side in my text editor for R/B. There isn't that much code to go through, because items that are 128 apart (except TMs/HMs) share the same effect pointer, which means as far as effect pointer goes, RB:000 is the same as RB:128, and RB:129 is the same as RB:001 (Master Ball, although it just jumps to ItemUseBall and does not have a 100% catch rate because the type of ball is checked inside ItemUseBall), etc.
Code: [Select]
B2F    |  57FA  |  FA 57 D0  |      ld a, [wIsInBattle]  ; D057
B1F    |  A7D0  |            |
       |        |  A7        |      and a
1F     |  81CA  |  CA 81 65  |      jp z, ItemUseNotTime  ; 6581
2F     |  3D65  |            |
       |        |  3D        |      dec a
3F     |  8BC2  |  C2 8B 65  |      jp nz, ThrowBallAtTrainerMon  ; 658B
4F     |  FA65  |            |
       |        |  FA 5A D0  |      ld a, [wBattleType]  ; D05A
5F     |  D05A  |            |
6F     |  283D  |  3D        |      dec a
       |        |  28 0F     |      jr z, .canUseBall  ; +15
7F     |  FA0F  |            |
       |        |  FA 63 D1  |      ld a, [wPartyCount]  ; D163
8F     |  D163  |            |
9F     |  06FE  |  FE 06     |      cp PARTY_LENGTH  ; 6
10F    |  0820  |  20 08     |      jr nz, .canUseBall  ; +8
11F    |  80FA  |  FA 80 DA  |      ld a, [wNumInBox]  ; DA80
B4F    |  FEDA  |            |
       |        |  FE 14     |      cp MONS_PER_BOX  ; 20
w m    |  CA14  |            |
       |        |  CA B1 65  |      jp z, BoxFullCannotThrowBall  ; 65B1
ws m   |  65B1  |            |
       |        |            |  .canUseBall
vtm    |  EAAF  |  AF        |      xor a
       |        |  EA 1C D1  |      ld [wCapturedMonSpecies], a  ; D11C
'dm    |  D11C  |            |
m      |  5AFA  |  FA 5A D0  |      ld a, [wBattleType]  ; D05A
w 'lm  |  FED0  |            |
       |        |  FE 02     |      cp BATTLE_TYPE_SAFARI  ; 2
fm     |  2002  |            |
       |        |  20 04     |      jr nz, .skipSafariZoneCode  ; +4
m      |  2104  |            |
       |        |            |  .safariZone
       |        |  21 47 DA  |      ld hl, wNumSafariBalls  ; DA47
-gm    |  DA47  |            |     
#      |  CD35  |  35        |      dec [hl]
       |        |            |  .skipSafariZoneCode
       |        |  CD ED 3D  |      call RunDefaultPaletteCommand  ; 3DED
é      |  3DED  |            |
il     |  433E  |  3E 43     |      ld a, $43
Lg-    |  1EEA  |  EA 1E D1  |      ld [wPokeBallAnimData], a  ; D11E
-g     |  CDD1  |            |
       |        |  CD 25 37  |      call LoadScreenTilesFromBuffer1  ; 3725
QGnSI  |  3725  |            |
GnSI   |  E821  |  21 E8 65  |      ld hl, ItemUseText00  ; 65E8
Q;MP-  |  CD65  |            |
       |        |  CD 49 3C  |      call PrintText  ; 3C49
;MP-   |  3C49  |            |
(116)  |  3A21  |  21 3A 58  |      ld hl, IsGhostBattle  ; 583A
(117)  |  0658  |            |
       |        |  06 0F     |      ld b, BANK(IsGhostBattle)  ; 0F
(118)  |  CD0F  |            |
       |        |  CD D6 35  |      call Bankswitch  ; 35D6
(119)  |  35D6  |            |
(120)  |  1006  |  06 10     |      ld b, $10
(121)  |  01CA  |  CA 01 58  |      jp z, .setAnimData  ; 5801
(122)  |  FA58  |            |
       |        |  FA 5A D0  |      ld a, [wBattleType]  ; D05A
(123)  |  D05A  |            |
(124)  |  203D  |  3D        |      dec a
       |        |  20 0F     |      jr nz, .notOldManBattle  ; +15
       |        |            |  .oldManBattle
(125)  |  210F  |            |
       |        |  21 87 D8  |      ld hl, wGrassRate  ; D887
(126)  |  D887  |            |
(127)  |  5811  |  11 58 D1  |      ld de, wPlayerName  ; D158
(128)  |  01D1  |            |
       |        |  01 0B 00  |      ld bc, NAME_LENGTH  ; 11
Wiki Discussion / Re: The master glitch directories
« on: December 08, 2019, 09:08:45 pm »
I don't see the point of them, either. I guess they are what happens when our categories are polluted by all kinds of garbage, and people want to make something slightly more useful...
What would look good would be something like a section on RB:094 with
  • The Spanish equivalent of this item is P8 (link)
  • The French equivalent of this item is...
  • The Italian equivalent of this item is...

What I am afraid is that, with some of the items that behave mostly the same across different language versions, this would look as ridiculous as "The French equivalent of this Pokémon is Bulbizarre (link)" on Bulbapedia's Bulbasaur page...
One thing I vaguely want to do is to have a table of glitch item effect pointers (ACE or not), and color code it into opcodes, constant operands, pointers, etc. and/or put it side by side with the disassembly (iirc it should fall entirely within the function ItemUseBall). This should illustrate why many glitch items are the way they are, and why they might be different on different language versions.
Western localizations of Generation I games are pretty similar to each other, much more so than compared to the original Japanese game. As a result, glitch items usually have similar names and/or behaviors. For example, Spanish P8 is equivalent to English 9F both in name and in function. Differences can mostly be explained by text pointers being different. For example, 3F takes the high byte of its effect pointer from a low byte of a text pointer, which means that its effect is likely to be different on all Western versions, as exemplified by French 2eme Etage.

Given this, how about we merge all the other Western ItemDexes (which are likely to remain incomplete forever otherwise) into the English ItemDex? The advantages would be:
  • Reducing duplicate information in pages, which may make maintaining the ItemDex easier.
  • As an extension of the above point, reducing incorrect information from copy-pasting (e.g. the 2eme Etage page was in the "ACE glitch items" category, which it does not belong to).
  • Eliminating red links from the ItemDex index, which (together with the straight up lack of entries) may otherwise confuse people with a foreign game.
  • Highlighting the items that are actually different between languages, encouraging glitch researchers to study them on language versions other than the ones where we already know their behaviors.

We can still add a section below the ItemDex pages to note the language versions where the item is confirmed to have the same behavior, although it should be understood that all items can be assumed to have the same behavior unless noted otherwise. And I guess if a language-specific glitch item is really notable in a non-English game, they can still have their own page, although I doubt there would be a need for such a special case. (ItemDex pages are generally not very long.)
Tech Help / Re: Pokemon Crystal Remote Code Execution
« on: November 28, 2019, 05:27:42 pm »
Sorry about that, I didn't see the Ctrl+G part. Yeah Parzival is right, if there are any opcodes not on the opcodes text file they show as "-". That automatically brings up BGB debugger where other emulators e.g. VBA may act differently (invalid opcode at (address) message etc.) On a Game Boy this freezes, while on 3DS Virtual Console it skips them. (This actually makes me wonder if this is deeper technically/if invalid opcodes have separate effects that can only be understood on a hardware level/or if any obscure peripherals use them like what Shonumi is doing)
Nope. The CPU hangs as the silicon isn't built to handle that set of bits as an instruction anymore so it goes apeshit.
My guess would be that, since each instruction takes a different number of cycles, there must be a signal that tells the CPU that the previous instruction has finished and the next instruction can begin. And whatever undefined behavior the invalid opcode triggers, it never emits that signal, so the CPU never gets to the next instruction.
General Discussion / Re: The Member's Guide to Topiclessness
« on: November 26, 2019, 03:53:58 pm »
I just found out that I need to submit my written thesis proposal two weeks before my oral presentation, which means that I have approximately six days to finish it, which is two days per chapter yet to be written. Still...
The basic problem is that we are trying to sub-categorize those glitches based on both the entry points and the goals, which means that sometimes the categorization makes little logical sense ("why is this one put in the goal-based category instead of the entry-point-based category?").

"Having them all as separate entries would look messy", and yet this is exactly what we are currently doing with ACE. I mean, if you are a new visitor to the site and want to find out what are the preferred (easiest, most robust, etc.) methods to achieve Gen I ACE, how are you supposed to tell from this template? (In general, I don't like the goal-based sub-categories existing in this template; I am OK with them existing as separate templates, but I think at least the ACE one in particular needs better organization.)

Ditto DV manipulation looks like a real glitch to me. Similar to the Transform assumption glitch, the intention of the developers seems to be that transformed Pokémon should properly "untransform" when caught, reverting both the species and the DVs to what is originally generated; yet apparently this is not the case when Transform is used multiple times. However, what it achieves is something also achievable by a non-glitch exploit (RNG manipulation), and its application is very narrow in scope, which leads me to believe that it is not that important.

Maybe the way to go is to separate this template into two parts that can and should overlap, "glitches/tricks with useful effects" and "versatile entry points". (Super Glitch, and probably expanded item pack, should belong only to the second category --- it is actually difficult to make use of a expanded item pack if you don't know what you are doing, as changing the items (including swapping or using consumables) in the "expanded" region may have bad effects.)

P.S. I feel like we are brainstorming for a way to better present this template, and the forum is not a good place to brainstorm compared to the Discord. Not that I actually have time for brainstorming right now...
Wiki Discussion / Re: On the definition of "glitch"
« on: November 26, 2019, 10:20:35 am »
OK, today I am reminded of why I think this question is important by this page.

The page is a short stub with only three paragraphs, and it is the first two paragraphs that I have a problem with:
Map script pointer manipulation is a glitch in Pokémon Red, Blue, and Yellow. It can be abused via the expanded items pack and is the parent glitch of map script arbitrary code execution and map script pointer item ball manipulation.

The glitch can be activated by modifying the location of the map script pointer by altering item 41 and item 41's quantity.
The logic here is incredibly twisted, and that's because it tries to frame something that is entirely an application of the extended item pack (i.e. a trick) as something that "naturally" exists in the game (i.e. a glitch). "The glitch can be activated by modifying the location of the map script pointer"? What glitch? To be honest, that might be a correct statement under certain definitions of words, but it is not a good way to think about this. The trick is to modify the location of the map script pointer (by altering item 41 and item 41's quantity in the expanded item pack).

My point is that confusing definitions makes it difficult to think about things. As such, they encourage readers not to think, and just to follow instructions. And that is how we keep our readers from becoming future glitch researchers.
I have been feeling like half of the "no further extensions" sub-category is a joke.

Cloning is a goal, and there are nearly a dozen glitches across different generations that achieves it. It is also weird to say the bad clone glitch isn't an "extension" of Gen II cloning.

Why is Ditto DV manipulation considered major? The ones that cause illegal movesets or clone items, I can understand, but this one I cannot.

Expanded party encounter table manipulation, Pokémon merge glitch, and Time Capsule exploit are not natural glitches, and they are also probably not the only "major" tricks of an expanded party or a 0xFF Pokémon.

Item duplication glitch is a disambiguation page, with one of the choices leading to another disambiguation page. Oh, do you mean Pokédex flag item duplication? The most common way to setup a x255 stack for item underflow?

Tweaking and Elite Four door glitch (and why not the Broken escalator glitch?) are probably only "no major extension" because our wiki's documentation on voiding is nearly non-existent.

Incidentally, the ledge method and museum guy method for walking through walls are both based on the Safari Zone exit glitch, and you can also fight Safari Zone Pokémon on left-facing shore tiles.
So, do we want to put glitches, tricks, and effects all into the same categories and same templates, or do we want a split?
Say, shouldn't those templates go below the page, instead of above? Fixes the problem of, you know, not seeing the actual page at first glance.
Excuse me, but what is Connection Copier doing in the ACE category?
Wiki Discussion / Re: Wiki Bug List and Reports
« on: November 15, 2019, 10:33:58 pm »
On, the second Wikipedia link is meant to lead to "Byte", as indicated in the source. Both links instead lead to the same Wikipedia page.

When linking to a Wikipedia page with a different name than the current page, Template:Wikipedia2 should be used. (The same goes for Bulbapedia, but not for the other external link templates, probably because they go to sites in different languages.) Now, whether this is a user-friendly design...
Wiki Discussion / Re: Direction
« on: November 11, 2019, 11:54:52 am »
(And wait, the expanded item pack is triggered by Pokédex flag 256?!Oh, yeah, it's putting a 0 after where 151 would be if that's what you meant.)

The usually route to an expanded item pack involves encountering MissingNo or 'M twice to change the quantity of the sixth item to 255, which works by setting the highest bit of the quantity byte, since it is the "seen" flag for those Pokémon with dex number 0 (really 256, because the dex number minus one is used as the index into the flag array, which underflows for dex number 0).
Pages: [1] 2 3 ... 6