User:TimoVM/JP Aka Midori Ao ACE Translation

From Glitch City Wiki
Jump to navigation Jump to search

This page is based on a translation/analysis of an ACE setup used in the Japanese versions of Pokémon Red, Green and Blue. The original article was written by flag3833753 and can be found [here].

Please note that the bulk of the guide focuses on later revisions of Red and Green. Details on how to adapt the guide for early versions of Red and Green, along with Blue, can be found at the end of the guide.

What is a RAM writer?

A RAM writer is a program that allows you to rewrite the game's memory, by adjusting values at specific memory addresses. This allows you to do basically anything in game, like getting any item, any pokémon etc..

Unfortunately, fully functional RAM writers are quite large in size. To allow for a fast setup^, we'll first make a compact RAM writer that is limited in functionality, then use that to write the full RAM writer.

Requirements

In order to install the RAM writer, you require the following:

  1. "なかよしバッヂ" in the item bag. (TO DO: add guide on how to actually obtain)
  2. The number of Safari Balls needs to be set to zero. If you've never visited the safari zone, no action is needed. If you have been there, start a new safari game and walk out the full 500 steps. The number of Safari Balls will be set to 0 once you get kicked out. Note that the safari ball count will not be reset if you leave early.
  3. An empty, unused box that has never been full at any point in the past, make sure to set it as the active box.
  4. Catch a pokémon and give it the nickname "うるてぽん". Then, deposit it in the day-care.

No unused box available

In the case that you don't have any unused boxes left, you will need to deposit a pokémon with a nickname "うるてEん" instead of the nickname "うるてぽん" to the day-care. Since "E" is usually an unavailable character, you need to take the following steps:

  • The number of remaining safari balls should be 0.
  • Deposit a pokémon with the nickname "てウん" to the day-care and immediately take it back.
  • Place pokémon with the following nicknames in order, starting from the 6th slot in the box:
ゾケゼひぢ
ギめなぼづ
ゅにづづの
  • Place a pokémon with the nickname "うるてぽん" in the 6th slot in the party.
  • Use "なかよしバッヂ". The 6th party pokémon's nickname should now be altered to "うるてEん". Deposit this pokémon to the day-care.

Catching pokémon and nicknaming them

Now that you have everything that's needed, we'll catch a bunch of pokémon and give them specific nicknames. After giving them nicknames, deposit them in the empty box in order.

Note: manually deposited pokémon are inserted at the bottom of the box, newly caught pokémon that are sent to the box with a full party get inserted at the top of the box instead.

If you send pokémon to the box by catching with a full party instead of manually depositing, make sure to follow the nickname list in reverse order.


Number of nickname Nickname Notes
Nickname #1 がんぜクョ small ョ
Nickname #2 ぶづぜンづ ン, not ソ
Nickname #3 よヅぜウづ ヅ, not ジ
Nickname #4 にぽづにぞ
Nickname #5 づなゅへへ small ゅ
Nickname #6 ううグ空だ 空 represents an empty space
Nickname #7 どグだギョ small ョ
Nickname #8 べへにんグ
Nickname #9 だゲぼダぞ
Nickname #10 空へにんグ 空 represents an empty space
Nickname #11 わとんヅー ヅ, not ジ
Nickname #12 グリググだ
Nickname #13 ざグわねん
Nickname #14 ぱへふんぴ
Nickname #15 へふんボぷ
Nickname #16 へふんだし
Nickname #17 ぼヂキづご
Nickname #18 ョのなひだ small ョ
Nickname #19 へよんち空 空 represents an empty space
Nickname #20 ぼダメにぽ
Nickname #21 にュだガに small ュ
Nickname #22 にヂ空ギて 空 represents an empty space
Nickname #23 ボデの

After depositing all pokémon and making sure to check if the order of nicknames inside the box is correct, you can use "なかよしバッヂ" . This will start the compact RAM writer.

Using the compact RAM writer

With the compact RAM writer, you can change the values stored in specific memory addresses. The controls are as follows:

A: Address +1
B: Address -1
DOWN: Value +1
UP: Value -1
RIGHT: Value +10h
LEFT: Value -10h
START: Exit

Next, we'll be using the compact RAM writer to rewrite the values at the address range $D9B3 to $DA52. Change the values according to the following table:

Address Value Opcode
D9B3 21 58 DA ld hl,DA58
D9B6 CD 0A DA call DA0A
D9B9 E5 push hl
D9BA 54 ld d,h
D9BB 5D ld e,l
D9BC 3E F8 ld a,F8
D9BE 83 add e
D9BF 5F ld e,a
D9C0 38 01 jr c,+01
D9C2 15 dec d
D9C3 06 12 ld b,12
D9C5 21 AB C3 ld hl,C3AB
D9C8 3E 7C ld a,7C
D9CA 22 ldi (hl),a
D9CB 7A ld a,d
D9CC CD FE D9 call D9FE
D9CF 7A ld a,d
D9D0 CD 00 DA call DA00
D9D3 7B ld a,e
D9D4 CD FE D9 call D9FE
D9D7 7B ld a,e
D9D8 CD 00 DA call DA00
D9DB 3E 7F ld a,7F
D9DD 22 ldi (hl),a
D9DE 1A ld a,(de)
D9DF CD FE D9 call D9FE
D9E2 1A ld a,(de)
D9E3 CD 00 DA call DA00
D9E6 36 7C ld (hl),7C
D9E8 3E 0C ld a,0C
D9EA 85 add l
D9EB 6F ld l,a
D9EC 30 01 jr nc,+01
D9EE 24 inc h
D9EF 1C inc e
D9F0 20 01 jr nz,+01
D9F2 14 inc d
D9F3 05 dec b
D9F4 20 D2 jr nz,-2E
D9F6 21 4B C4 ld hl,C44B
D9F9 36 ED ld (hl),ED
D9FB E1 pop hl
D9FC 18 B8 jr -48
D9FE CB 37 swap a
DA00 E6 0F and a,0F
DA02 C6 F6 and a,F6
DA04 30 02 jr nc,+02
DA06 C6 60 add a,60
DA08 22 ldi (hl),a
DA09 C9 ret
DA0A CD 67 38 call 3867
DA0D F0 B3 ld a,(ff00+B3)
DA0F CB 57 bit 2,a
DA11 28 01 jr z,+01
DA13 E9 jp hl
DA14 CB 5F bit 3,a
DA16 28 02 jr z,+02
DA18 C1 pop bc
DA19 C9 ret
DA1A CB 77 bit 6,a
DA1C 28 04 jr z,+04
DA1E 3E FF a,FF
DA20 18 15 jr +15
DA22 CB 7F bit 7,a
DA24 28 04 jr z,+04
DA26 3E 01 ld a,01
DA28 18 0D jr +0D
DA2A CB 67 bit 4,a
DA2C 28 04 jr z,+04
DA2E 3E 10 ld a,10
DA30 18 05 jr z,+05
DA32 CB 6F bit 5,a
DA34 C8 ret z
DA35 3E F0 ld a,F0
DA37 CB 43 bit 0,e
DA39 28 03 jr z,+03
DA3B 86 add (hl)
DA3C 77 ld (hl),a
DA3D C9 ret
DA3E CB 4B bit 1,e
DA40 28 03 jr z,+03
DA42 84 add h
DA43 67 ld h,a
DA44 C9 ret
DA45 CB 7F bit 7,a
DA47 28 05 jr +05
DA49 85 add l
DA4A 6F ld l,a
DA4B D8 ret c
DA4C 25 dec h
DA4D C9 ret
DA4E 85 add l
DA4F 6F ld l,a
DA50 D0 ret nc
DA51 24 inc h
DA52 C9 ret

After writing these values, it is recommended to exit the compact RAM writer and save.

Next, change the values of addresses $D984 to $D987 to:

00 C3 B3 D9

After this is done, exit the program and use "なかよしバッヂ" again. This time, the full RAM writer should start.

  • If the full RAM writer starts successfully, you can exit the full RAM writer and save.
  • If it does not start, reset the game and check the values you entered using the compact RAM writer.

Using the full RAM writer

Controls are as follows:

DOWN: 		address +1
UP: 		address -1
RIGHT: 		address +10
LEFT: 		address -10
B+DOWN: 	address +100
B+UP: 		address -100
B+RIGHT: 	address +1000
B+LEFT: 	address -1000
A+DOWN: 	value +1
A+UP: 		value -1
A+RIGHT: 	value +10
A+LEFT: 	value -10
SELECT: 	execute code starting from the current selected address (USE ONLY IF YOU KNOW WHAT YOU'RE DOING)
START: 		exit

You'll notice that this RAM writer is much more convenient to use compared to the compact RAM writer.

Be VERY careful when using SELECT. Using it without meaning to will likely crash the game.

Keep in mind that the memory editor occupies the range between $D9B3 and $DA52. Do not edit the values within this range, otherwise you risk destroying the full RAM writer and crashing the game.

Porting the setup to early Red/Green versions and Blue versions

Nicknames to change

Due to version differences, the code described earlier doesn't fully work on Blue version and earlier revisions of Red & Green versions. This can be resolved by using different nicknames for the compact RAM writer, and adjusting a small bit of the code we'll write with that compact RAM writer.

First, adjust the following nicknames. All other nicknames go unchanged.

Number of nickname Nickname to replace Nickname to use in R/G Nickname to use in B Notes
Nickname #4 にぽづにぞ にぽづにピ にぽづ空空 空 represents empty space
Nickname #5 づなゅへへ づなゅへへ 空なゅへタ small ゅ, 空 represents empty space

Values to change with the compact RAM writer

Next, adjust the following values. All other values go unchanged.

Location of values Values to replace Values to use in R/G Values to use in B
DA0A CD 67 38 CD 79 38 CD 8F 38