All Gens Past Gens Research Thread

Jorgen

World's Strongest Fairy
is a Forum Moderator Alumnusis a Community Contributor Alumnusis a Contributor Alumnusis a Past SPL Champion
Could you eat a Hyper Beam, freeze a mon, then subsequently overwrite the Freeze with Sleep?

Is Sleep the only status the Hyper Beam glitch works for?

Holy shit you're on fire Crystal_
 

dekzeh

B is for BRUTUS
is a Tournament Director Alumnusis a Forum Moderator Alumnusis a Past WCoP Champion
Okay, this bug is as hilarious as it sounds, but it's true, incredibly:

If a Pokemon that has just used Hyper Beam and has yet to recharge (that is, its Recharge status is active) is targeted with a sleep inducing move, any other status it may already have will be ignored (paralysis/burn/freeze/poison) and sleep will be induced regardless. In addition, the sleep inducing move can NEVER miss (not even from a "255").

Will make a video soon.
Can you fucking stop ruining this metagame we have played for over 10 years?!

>:(
 
Could you eat a Hyper Beam, freeze a mon, then subsequently overwrite the Freeze with Sleep?
Yeah, haven't thought of that possibility. It requires a speed tie and first the Hyper Beam user going first, then going second in the next turn, right?

Is Sleep the only status the Hyper Beam glitch works for?
Yep.

Can you fucking stop ruining this metagame we have played for over 10 years?!
I'm enjoying this so much! I won't stop until Golbat and Butterfree are somehow the best Pokemon in the metagame.
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Ok, I've implemented the hyper beam recharge bug so you can now put to sleep any statused mon on its recharge turn:
https://github.com/Zarel/Pokemon-Showdown/commit/b5f04be35042c717b59d82b3658853a04622d50f

Turn 1
Gengar, come back!
Go! Exeggutor!
The opposing Persian used Bubble Beam!
It's not very effective... Exeggutor lost 4.3% of its health!
Turn 2
>>> p1active
<<< p1a: Persian
>>> p1active.setStatus('psn')
The opposing Persian was poisoned!
<<< true
The opposing Persian used Bubble Beam!
It's not very effective... Exeggutor lost 4.3% of its health!
The opposing Persian was hurt by poison!
Exeggutor used Sleep Powder!
Exeggutor's attack missed!
Turn 3
The opposing Persian used Bubble Beam!
It's not very effective... Exeggutor lost 4.1% of its health!
The opposing Persian was hurt by poison!
Exeggutor used Sleep Powder!
But it failed!
Turn 4
The opposing Persian used Hyper Beam!
Exeggutor lost 39.7% of its health!
The opposing Persian was hurt by poison!
Exeggutor used Sleep Powder!
The opposing Persian fell asleep!


Enjoy :D
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Quick questions:
1. Sand Attack was normal on gen 1, right? It's listed as ground move on Smogon but I think that's wrong.
2. Stadium was bring 3 use 3? I recall it being so and not bring 6 choose 3.
 

froggy25

Bye RNGmon
is a Researcher Alumnus
1. Sand-Attack is Normal in gen 1. It hits Ghosts, type is ignored.
2. Stadium is bring 6, use 3 in Stadium Cups and Gym Leaders Castle. In human vs human battles you can use 6vs6 if you want.

If you plan to implement Stadium in Pokémon Showdown, I'm currently looking at Critical Hit mechanics as they work a bit differently than in RBY.
Critical Hits are slightly less frequent, and Focus Energy does not exactly multiply Critical Hits by 4.
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Yeah, the way I've implemented it is that I inverte the focus energy check (as was probably intended on gen 1), making focus energy make the crits as often as on gen 1 and without it quarter as often.

I'm wondering whether to put stadium on 6v6 or bring 6 use 3. You know, to make a cool difference between rby and stadium.
 

froggy25

Bye RNGmon
is a Researcher Alumnus
It's weirder than that.
Jolteon for example has:
• 130/512 in RBY
• 102/512 in Stadium
• 364/512 w/ Focus Energy on Stadium
I'm still trying to figure exactly how the Critical Hit Ratio is calculated, but I'm sure about those probabilities.

Also, there's no 1/256 misses for 100% Accuracy moves in Stadium.
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Yeah I already got the 1/256 thing. I'm intrigued on critical hit calculation, though. The actual cartridge game calculates it over 256 (0-255), where Jolteon has 65/256 or 130/512, so 102/512 should be 51/256.

To get 51/256, given the calculation works as gen 1:
critrate = floor((floor(basespeed / x) * x) / x)
For base speed = 130, x can be: [2.51, 2.53]
But decimals don't make much sense, it must be a division by 100 with flooring applied. So we try this:
critrate = floor((floor(basespeed / x * 100) * x / 100) / x * 100)
and we get [246, 249], when it would make sense for it to be 255, which gives us a 49/256 or 98/512.

Now, going on what I find on the internet (which is prone to not to be 100% accurate), I get this:
CH% rate = (User's base Speed) * 100 / 128, which gives us 101/512, rounded down.

Following this formula, to achieve the 364/512 or 157/256 with focus energy on Stadium, focus energy should work such as: basespeed * 100 / 36, which gives us, floored, 361/512 or 180.5/256 (180). Which looks pretty arbitrary, to be honest. Dividing by 32, which is 128 / 4 (the four times from focus energy) gives us 406/512 or 203/256, which looks slightly high but makes sense, don't you think so? And that would make high crit rate moves to work by dividing by 64, double the changes as the original / 128.

Edit: Checking the ROM hack page.
Relevant

LBU T8, $004C (V1)
ANDI T9, T8, $FFF7 // P1 CH Rate multiplier & 0xFFF7
SB T9, $004C (V1)
LW A1, $0034 (SP)
LBU T0, $06D8 (A1)
ADDIU A1, A1, $068C
ANDI T1, T0, $FFF7 // P2 CH Rate multiplier & 0xFFF7
SB T1, $004C (A1)
LBU T2, $004C (V1)
ANDI T3, T2, $0012 // (0x80287B18) & 0x12
BNEZ T3, $002FA150
Critical Hit
0x30B97C -

LUI T6, $8439
LW T6, $0240 (T6)
ADDIU SP, SP, $FFE8
SW RA, $0014 (SP)
LHU V0, $002C (T6)
LUI V1, $8439
SLL T7, V0, $2
ADDU V1, V1, T7
LW V1, $0010 (V1)
LBU T8, $06D9 (V1) // Load Critical Hit Rate multiplier to T8
ADDIU V1, V1, $068C
ANDI T9, T8, $0080
BNEL T9, R0, $0030B9C8 // If Critical Hit Rate multiplier ≥ 128, jump to 0x30B9C4
LBU T2, $005A (V1) // Loads 0x80287B24 to T2
LBU T0, $0015 (V1) // Loads 0x80287AE0 to T0
ANDI T1, T0, $0018
BEQL T1, R0, $0030B9EC // If (0x80287AE0) < 24, jump to 0x30B9E8
OR V0, R0, R0
(0x30B9C4) LBU T2, $005A (V1)
ADDIU AT, R0, $00F0
ANDI T3, T2, $00F0
BNEL T3, AT, $0030B9EC
OR V0, R0, R0
JAL $04320658
ADDIU A0, R0, $0023
BEQ R0, R0, $0030B9F0
LW RA, $0014 (SP)
(0x30B9E8) OR V0, R0, R0
LW RA, $0014 (SP)
(0x30B9F0) ADDIU SP, SP, $0018
JR RA
0x35A614 - Compare Move Effect ID with the array at 0x3756AC and 0x37570C (High Critical Hit Rate Moves)

OR V0, A2, R0 // Copy number of iterations to check in V0
SW A0, $0000 (SP)
ANDI A0, A0, $00FF
BEQ A2, R0, $0035A650 // If all the array's values have been compared with Pokémon's Move ID, jump to 0x35A650
ADDIU A2, A2, $FFFF
OR V1, A0, R0 // Copy Pokémon's Move Effect in V1
LBU T6, $0000 (A1) // Load next array's value to compare with Pokémon's Move Effect in T6
OR V0, A2, R0 // Copy number of iterations to check in V0
ADDIU A1, A1, $0001 // Increase array's value pointer
BNE V1, T6, $0035A648 // If the array's value is not equal to Pokémon's Move Effect, jump to 0x35A648 (next function)
NOP
JR RA
0x35A9C0 - 0x35AB18 - Attack / Defense / Critical Hit manipulation for Damage Calculation

LBU T6, $0046 (V0) // Load Move Power to T6
LUI V1, $843C
ADDIU V1, V1, $4DC6 // V1 = 0x801E8126
ANDI T7, T6, $FFFF // Copy Move Power to T7
BEQ T7, R0, $0035AB18 // If Move Power = 0, get out of this function
SH T6, $0000 (V1) // Store Move Power at 0x801E8126
LBU T8, $0047 (V0) // Load Move Type to T8
LUI V1, $843C
LUI A0, $843C
SLTI AT, T8, $0014 // If Physical Move, set AT to 1
BEQ AT, R0, $0035AA58 // If Special Move, jump to 0x35AA58 (LUI V1, $843C)
NOP
LW V1, $523C (V1)
LUI A2, $843C
ADDIU A2, A2, $4DCA // A2 = 0x801E812A
LHU T9, $002C (V1) // Load Defense stat to T9
LUI A3, $843C
SH T9, $0000 (A2)
LBU T0, $004E (V1) // Load "Is Reflect up ?" to T0
SLL T3, T9, $1 // T3 = Defense stat × 2
ANDI T1, T0, $0004
BEQ T1, R0, $0035AA20 // If Reflect is not up, jump to 0x35AA20 (LBU A0, $4DA5 (A0))
NOP
SH T3, $0000 (A2) // Store Defense × 2 in 0x801E812A
(0x35AA20) LBU A0, $4DA5 (A0) // Load Critical Hit to A0
BEQL A0, R0, $0035AA4C // If not a Critical Hit, jump to 0x35AA4C
LHU T6, $002A (V0)
LHU T4, $003A (V1)
LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T4, $0000 (A2)
LHU T5, $0038 (V0)
BEQ R0, R0, $0035AAC0 // Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T5, $0000 (A3)
LHU T6, $002A (V0)
(0x35AA4C) ADDIU A3, A3, $4DC8
BEQ R0, R0, $0035AAC0 // Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T6, $0000 (A3)
(0x35AA58) LUI V1, $843C
LW V1, $523C (V1)
LUI A2, $843C
ADDIU A2, A2, $4DCA
LHU T7, $0030 (V1) // Load Special stat to T7
LUI A0, $843C
SH T7, $0000 (A2)
LBU T8, $004E (V1) // Light Screen
ANDI T9, T8, $0002
BEQ T9, R0, $0035AA88
SLL T1, T7, $1 // T1 = Special stat × 2
SH T1, $0000 (A2) // Store Special × 2
LBU A0, $4DA5 (A0) // Load Critical Hit to A0
BEQL A0, R0, $0035AAB4 // If not a Critical Hit, jump to 0x35AAB4
LHU T4, $0030 (V0)
LHU T2, $003E (V1)
LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T2, $0000 (A2)
LHU T3, $003E (V0)
BEQ R0, R0, $0035AAC0 // Jump to 0x35AAC0 (LHU A1, $0000 (A3))
SH T3, $0000 (A3)
LHU T4, $0030 (V0)
(0x35AAB4) LUI A3, $843C
ADDIU A3, A3, $4DC8
SH T4, $0000 (A3)
(0x35AAC0) LHU A1, $0000 (A3) // Load Attack stat to A1
ANDI T5, A1, $FF00
BEQL T5, R0, $0035AB00 // If Attack stat < 256, jump to 0x35AAFC (LBU T1, $0026 (V0))
LBU T1, $0026 (V0) // Load Level to T1
LHU V1, $0000 (A2) // Load Defense Stat to V1
SRL T7, A1, $2 // T7 = Attack stat >> 2
ANDI T9, T7, $FFFF
ANDI T6, V1, $FF00
BEQ T6, R0, $0035AAFC // If Defense stat < 256, jump to 0x35AAFC (LBU T1, $0026 (V0))
SRL T8, V1, $2 // T8 = Defense stat >> 2
SH T7, $0000 (A3) // Store T7 to 0x801E8128
BNEZ T9, $0035AAFC // If T9 > 0, jump to 0x35AAFC
SH T8, $0000 (A2) // Store T8 in 0x801E812A
ADDIU T0, R0, $0001
SH T0, $0000 (A3) // Set 0x801E8128 to 1
(0x35AAFC) LBU T1, $0026 (V0) // Load Level to T1
LUI V1, $843C
ADDIU V1, V1, $4DCC // V1 = 0x801E812C
BEQ A0, R0, $0035AB18 // If not a Critical Hit, get out of the function
SH T1, $0000 (V1)
SLL T3, T1, $1 // T3 = Level × 2
SH T3, $0000 (V1) // Store Level × 2 in 0x801E812C
JR RA
0x35C4D8 - Determines if the attack is a Critical Hit

LUI A0, $8439
LBU A0, $AC60 (A0)
ADDIU SP, SP, $FFE0
ADDIU A1, R0, $0001
LUI AT, $843C
SW RA, $0014 (SP)
BNE A1, A0, $0035C52C // If A0 ≠ 1, jump to 0x35C52C
SB R0, $4DA5 (AT)
LUI V0, $843C
LW V0, $5238 (V0)
LUI V1, $8007
LBU T6, $000B (V0)
SLL T7, T6, $2
SUBU T7, T7, T6
SLL T7, T7, $3
SUBU T7, T7, T6
ADDU V1, V1, T7
LBU V1, $0F8D (V1) // Loads CH Ratio
ADDIU V1, V1, $004C // CH Ratio + 76
BEQ R0, R0, $0035C558 // Jump to 0x35C558
SRA V1, V1, $2 // CH Ratio ÷ 4
(0x35C52C) LUI V0, $843C
LW V0, $5238 (V0)
LUI V1, $8007
LBU T8, $000B (V0)
SLL T9, T8, $2
SUBU T9, T9, T8
SLL T9, T9, $3
SUBU T9, T9, T8
ADDU V1, V1, T9
LBU V1, $0F8D (V1) // Load CH Ratio to V1
SRA V1, V1, $1
(0x35C558) LBU T0, $0046 (V0)
BNEZ T0, $0035C56C
NOP
BEQ R0, R0, $0035C67C
OR V0, R0, R0
(0x35C56C) BNE A1, A0, $0035C5C0
ADDIU A2, R0, $0004
LBU T1, $004D (V0)
LUI A1, $8439
ADDIU A1, A1, $AE4C
ANDI T2, T1, $0004
BEQ T2, R0, $0035C598 // If Focus Energy is not active, jump to 0x35C598
ADDIU A2, R0, $0004
SLL V1, V1, $2 // Adjusted CH Ratio × 4
BEQ R0, R0, $0035C59C // Jump to 0x35C59C
ADDIU V1, V1, $00A0
(0x35C598) SLL V1, V1, $1
(0x35C59C) LBU A0, $0044 (V0) // Load Move ID in A0
JAL $0436FD54 // Jump to 0x35A614 (Checks if the Move has a High Critical Hit Rate)
Critical Hit calculation
0x35C5A4 - Critical Hit Ratio calculation

SW V1, $0018 (SP)
BEQ V0, R0, $0035C5B8 // Jump to 0x35C5B8 if V0 = 0
LW V1, $0018 (SP) // Load Adjusted CH Ratio in V1
BEQ R0, R0, $0035C624 // Jump to 0x35C624
SLL V1, V1, $2 // Adjusted CH Ratio × 4
(0x35C5B8) BEQ R0, R0, $0035C624
SRA V1, V1, $1 // Adjusted CH Ratio ÷ 2
LBU T3, $004D (V0)
LUI A1, $8439
ADDIU A1, A1, $AE4C
ANDI T4, T3, $0004
BEQL T4, R0, $0035C5E4
SLL V1, V1, $1
BEQ R0, R0, $0035C5F4
SRA V1, V1, $1
SLL V1, V1, $1
SLTI AT, V1, $0100
BNEL AT, R0, $0035C5F8
LBU A0, $0044 (V0)
ADDIU V1, R0, $00FF
LBU A0, $0044 (V0)
JAL $0436FD54

(0x35C5FC) SW V1, $0018 (SP)
BEQ V0, R0, $0035C620
LW V1, $0018 (SP)
SLL V1, V1, $2
SLTI AT, V1, $0100
BNEL AT, R0, $0035C628
SLTI AT, V1, $0100
BEQ R0, R0, $0035C624
ADDIU V1, R0, $00FF
SRA V1, V1, $1
(0x35C624) SLTI AT, V1, $0100
BNEZ AT, $0035C634 // If Adjusted CH Ratio ÷ 2 < 256, jump to 0x35C634
NOP
ADDIU V1, R0, $00FF // If Adjusted CH Ratio ÷ 2 > 256, set it to 255
(0x35C634) BGTZ V1, $0035C640 // If Adjusted CH Ratio > 0, jump to 0x35C640
NOP
ADDIU V1, R0, $0001 // Adjusted CH Ratio is at least 1/256
(0x35C640) JAL $0436F6D8

0x35C648 - Compares Pseudo-Random Number and Adjusted Critical Hit Ratio, sets CH flag if it is a Critical Hit

LW V1, $0018 (SP) // Load Adjusted Critical Hit Ratio
LUI A0, $843C
ANDI T5, V0, $00FF // Load 1-byte PRN from previous PRNG call
ADDIU A0, A0, $4DA2
SLT AT, T5, V1
BNEZ AT, $0035C66C // If PRN < Adjusted CH Ratio, jump to 0x35C66C
SB V0, $0000 (A0) Store 1-byte PRN to (0x801E8101)
BEQ R0, R0, $0035C67C // Jump to 0x35C67C
OR V0, R0, R0 // Set V0 to 0
(0x35C66C) ADDIU T6, R0, $0001 // Set T6 to 1
LUI AT, $843C
SB T6, $4DA5 (AT) // Set CH flag at (0x801E8104) to 1
ADDIU V0, R0, $0001 // Set V0 to 1
(0x35C67C) LW RA, $0014 (SP)
ADDIU SP, SP, $0020
JR RA // Onto damage calculation...
 
Last edited:

froggy25

Bye RNGmon
is a Researcher Alumnus
Note that the Stadium quickfix inherently gives all non-100% accuracy move an additional 1/256 accuracy.
Hypnosis which has an accuracy of 153 hits if PRN < 153, or if PRN == 255
If you want to implement accuracy / 256 one day
 
Last edited:

froggy25

Bye RNGmon
is a Researcher Alumnus
Now, going on what I find on the internet (which is prone to not to be 100% accurate), I get this:
CH% rate = (User's base Speed) * 100 / 128, which gives us 101/512, rounded down.
Edit: the game does Base Speed + 76 >> 2, see next posts

Following this formula, to achieve the 364/512 or 157/256 with focus energy on Stadium, focus energy should work such as: basespeed * 100 / 36, which gives us, floored, 361/512 or 180.5/256 (180). Which looks pretty arbitrary, to be honest. Dividing by 32, which is 128 / 4 (the four times from focus energy) gives us 406/512 or 203/256, which looks slightly high but makes sense, don't you think so? And that would make high crit rate moves to work by dividing by 64, double the changes as the original / 128.
Unfortunately, it's really 182/256. I'm still looking into it atm.
As you can see on this printscreen, Stadium checks if the 1-byte PRN is lower than the adjusted CH Ratio. For Jolteon, the CH Ratio w/ Focus Energy is 0xB6, which is 182/256.
Without Focus Energy it is 0x33, which is 51/256.
 

Attachments

Last edited:

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Sorry, I edited my previous post in, but now I see it, it seems that the game checks for focus energy first and then critical hit ratio? Damn, this is hard to read, having to check the MIPS instruction reference all the time, lol.

BEQ T2, R0, $0035C598 // If Focus Energy is not active, jump to 0x35C598
---- executed if focus energy -----
ADDIU A2, R0, $0004
SLL V1, V1, $2 // Adjusted CH Ratio × 4 // This is a shift left logical. So V1, critical hit rate, = V1 << $2
BEQ R0, R0, $0035C59C // Jump to 0x35C59C // A Branch On Equal
ADDIU V1, V1, $00A0 // Add immediate unsigned, no overflow (v1 = v1 + $00A0). 0xA0 is 160.
----- end execution if focus energy ----
(0x35C598) SLL V1, V1, $1 // Shift left logical, V1 << $1
(0x35C59C) LBU A0, $0044 (V0) // Load Move ID in A0

So then it jumps to critical hit ratio calculation from the move.
 

froggy25

Bye RNGmon
is a Researcher Alumnus
I'm sorry about the really bad formatting, LemASM only lets me copy one line at a time without the address, as I couldn't find a "save MIPS" button or something like that >_<
If there is a more practical way, please tell me as I'm still a newbie at N64 MIPS !
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Yeah, don't worry, I have 0 idea on MIPS; I need to read the instructions with the manual to find the stuff out. Right now I'm reading it I don't really get as I see it's shifting left and right by 1 all the time and a couple of >> 2 and << 2. I don't know if the code on the page is exactly ordered...

On "Determines if the attack is a Critical Hit"
BNE A1, A0, $0035C52C (goto 0x35C52C)
Loads crit ratio, adds 4C (76) to it, if greater than 0, ratio >> 2 ( /= 4).
Start 0x35C52C
Loads crit ratio, ratio >> 1 ( /= 2)
BEQ T2, R0, $0035C598 // If Focus Energy is not active, goto to 0x35C598
ratio << 2 ( *= 4)
BEQ R0, R0, $0035C59C // goto to 0x35C59C
ADDIU V1, V1, $00A0
Start 0x35C598
ratio << 1 ( *= 2)
Start 0x35C59C
LBU A0, $0044 (V0) // Load Move ID in A0
JAL $0436FD54 // Jump to 0x35A614 (Checks if the Move has a High Critical Hit Rate)

Seems that focus energy does << 2 and non focus energy does << 1? Then 0x35A614 has a test for the move data to see its crit rate, and then on the crit rate calc there's a bunch of >> 1 and << 1. And a some other shifts of 2.
 
Last edited:

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Wait, wait, wait:
Base speed 130
Add 76 to it -> 206>
206 >> 1
(130 + 76) >> 1 = 103
103 >> 1 = 51

Reading again 0x35C4D8 - Determines if the attack is a Critical Hit

BNE A1, A0, $0035C52C
SB R0, $4DA5 (AT)
LUI V0, $843C
LW V0, $5238 (V0)
LUI V1, $8007
LBU T6, $000B (V0)
SLL T7, T6, $2
SUBU T7, T7, T6
SLL T7, T7, $3
SUBU T7, T7, T6
ADDU V1, V1, T7
LBU V1, $0F8D (V1) // Loads CH Ratio
ADDIU V1, V1, $004C // ratio + 76
BEQ R0, R0, $0035C558 // Jump to 0x35C558 if R0
SRA V1, V1, $2 // ratio >> 2

This gets us (130 + 76) >> 2 which is 51 which is regular crit ratio.
 

Joim

Pixels matter
is a Site Content Manager Alumnusis a Battle Simulator Admin Alumnusis a Programmer Alumnusis a Tiering Contributor Alumnusis a Contributor Alumnusis a Smogon Media Contributor Alumnusis an Administrator Alumnus
Haha, you ninja'd me on the focus energy, was reading the code more carefully in the train and saw you already has posted it.

Well, tomorrow I'm adding the stadium challenge option :P
 

Disaster Area

formerly Piexplode
Crystal_ I noticed you failed to mention the other glitch you found on the paraslam day in here, about the speed boost/drop stuff whilst statused. Could you post that here? I'm not sure if it's been coded into the sim yet either - would have mattered in a game I just played versus a friend (would have abused the hbeam+sleep glitch too but he bslammed 3rd time in tauros ditto on my victreebel :[)
 

Users Who Are Viewing This Thread (Users: 1, Guests: 1)

Top