Jump to content

Join Avenue Customization & Editing


Kaphotics

Recommended Posts

Join Avenue is pretty customizeable in game, but there's many aspects you can't really change. This thread is aimed to edit the Join Avenue via save editing or RAM editing (AR Codes).

ja%20sprites.pngflag.png

level%20100.pngavenue%20sprites.png

Main Structure:

0x23C00 - 0x0000000000000008

Visitors - 0xC4 long

0x23C08 - Visitor 1

0x23CCC - Visitor 2

0x23D90 - Visitor 3

0x23E54 - Visitor 4

0x23F18 - Visitor 5

0x23FDC - Visitor 6

0x240A0 - Visitor 7

0x24164 - Visitor 8

0x24228 - 0x0000000C

NPC Fans - 0x60 long

0x2422C - Fan 1

0x2428C - Fan 2

0x242EC - Fan 3

0x2434C - Fan 4

0x243AC - Fan 5

2440C - Fan 6

2446C - Fan 7

244CC - Fan 8

2452C - Fan 9

2458C - Fan 10

245EC - Fan 11

2464C - Fan 12

Occupants - 0xC4 long

0x246AC - Occupant 1

0x24770 - Occupant 2

0x24834 - Occupant 3

0x248F8 - Occupant 4

0x249BC - Occupant 5

0x24A80 - Occupant 6

0x24B44 - Occupant 7

0x24C08 - Occupant 8

Helpers - 0x58 long

0x24CCC - Helper 1 (Registration)

0x24D24 - Helper 2 (Shops)

0x24D7C - Helper 3 (Organization)

0x24DD4 - Helper 4 (Healer)

Avenue Settings

0x24E8C-0x24E9B - Player Trivia (set by avenue NPCs, see next post)

0x24E9C-0x24EA7 - Player Activities (recent happenings to player ^)

0x24EA8-0x24EAB - 00000000 (nothing, unused)

0x24EAC - Your Favorite Phrase (0x10)

0x24EBC - Your Impressed Phrase (0x10)

0x24EF4 - Join Avenue's Name (11 characters + terminator, 0x18)

0x24F1E - Your Title (0x10)

bunch of FF's

0x24FCC - Avenue Rank (0-9999, dec 2 bytes)

0x24FCE - Avenue Ceiling Color

00 Orange

01 Purple

02 Blue

03 Green

0x252A8 - Save count (0x2)

0x252AA - Checksum of Join Avenue Region [0x23C00-0x252A7]

0x25F86/7 - Copy of Checksum of JA Region

0x25FA2/3 - Checksum of Checksum Region 0x25F00/93

I've successfully re-inserted a visitor after all the visitors had been removed from the save file! Just had to correct the checksums and it worked easily.

reinsert.png

Edited by Kaphotics
Link to comment
Share on other sites

Sub-structures of Join Avenue:

Visitor Structure

Pretty much the same structure as occupants, maybe a few different offsets but I haven't bothered with these.

Here's some extracted visitors:
DANIEL
MIKE
DAVE
Robbie
(.pjv, poke joinavenue visitor)

NPC Fan Structure

0x00 - Fan Name (0xE, 7 + terminator)

0x0E/F - I think they are unused, this is usually origin location

0x10 - NPC Greeting

work in progress

0x22 - Gender (0x10 female, 0x00 male)

0x2C - NPC Text 1

0x3C - NPC Text 2

0x4F - Has been spoken to flag (1=spoken to)

0x55 - Has to deal with text bubble popups, which NPC it attaches to.

0x5C - Has to do with souvenirs given, can't yet discern how it does it.

Occupant Structure

0x00 - Occupant Name (0xE, 7 + terminator)

0x0E - Country

0x0F - SubLocation

0x10 - Occupant Shout (0x10, 8 characters)

occupant flags

0x22 - Gender (0x10 female, 0x00 male)

0x24 - Trainer ID

0x28 - Played Time

0x2A - Occupant Sprite (overworld) In general,
via this sheet
order.

occupant stats

0x2C - Restriction for Recruitment (based on level)

0x2E - Shop Choices (8 bits, not sure how it picks)

0x34 - Pokemon in Pokedex, uses lowest 2 bits from 0x35 as the uppermost bits for this number.

0x35 - Favorite Pokemon (0x2, Note: lowest 2 bits are used by 0x34. Chatot 0x1B9 = 0x6E4 (with pokedex=18d)

0x39 - Medals

0x3A - Adventure Start

0x3C - Hall of Fame Entry

0x40 - Link Trades (signed 0x4)

0x44 - Nicknames Given (signed 0x4)

0x48 - Customers (signed 0x4)

0x4C - Money Spent (signed 0x4)

0x50 - Passerby Met (signed 0x4)

0x54 - Link Battles (signed 0x4)

0x58 - Pokemon Caught (signed 0x4)

0x5C - Eggs Hatched (signed 0x4)

0x60 - Occupant Trivia Responses (see trivia structure)

0x70 - Occupant Activities (recent happenings)

0x7C - 00000000

0x80 - Greeting (0x10, 8 characters)

0x90 - Farewell (0x10, 8 characters)

0xA0 - IsPlayer Flag (00 - NPC, 01 - Met Human player)

0xA3 - Year Met

0xA4 - Month Met

0xA5 - Day Met

0xAB - Player's Join Avenue Rank (not in yours)

0xAD - Current Shop Rank (00-FF)

0xAE - Current Shop EXP (0000-FFFF)

0xB0 - Inventory Availability (determined and set by game) - Bitflags, 0 = available, 1 = unavailable

0xB4 - Shop Type, appearance, and NPC position

- I really have no idea how this works, it determines what model to use too

Helper Structure

0x00 - Helper Name (0xE)

0xE - Country

0xF - Location

0x10 - First Meet Line (0x10)

0x20 - Flags

0x2A - Helper Overworld Sprite. In general,
via this sheet
order.

0x2C - Has to do with positioning inside building

0x30 - Met Year

0x31 - Met Month

0x32 - Met Day

0x33 - Unused? 00

0x34 - Greeting Line 1 (0x10, 8 characters)

0x44 - Greeting Line 2 (0x10, 8 characters)

0x54 - 00000000

Trivia Structure

0x24E8C - "Person you like" Response

00 - No Response
01 - Yes
02 - No
03 - Many
04 - Not interested

0x024E8D - "When you like somebody" Response

00 - No Response
01 - Tell the person about it
02 - Wait for the other person to say it first

0x024E8E - "Charming feature" Response

00 - No Response
01 - Coolness
02 - Beauty
03 - Cuteness
04 - Cleverness
05 - Toughness

0x24E8F - "Personality" Response

00 - No Response
01 - Meticulous
02 - Sloppy

0x24E90 - "Siblings" Response

00 - No Response
01 - Oldest
02 - Middle
03 - Youngest
04 - Only child

0x24E91 - "Friend types" Response

00 - No Response
01 - Boys
02 - Girls
03 - Men
04 - Women
05 - Middle-aged men
06 - Middle-aged women
07 - Elderly men
08 - Elderly women

0x24E92 - "Your room" Response

00 - No Response
01 - Neat
02 - Messy

0x24E93 - "Dreams" Response

00 - No Response
01 - Make it come true
02 - Give it up

0x24E94 - "Rules" Response

00 - No Response
01 - Follow them
02 - Create new ones
03 - Break them

0x24E95 - "Talents and efforts" Response

00 - No Response
01 - Effort
02 - Talent

0x24E96 - "Hottest" Response

00 - No Response
01 - Pokestar Studios
02 - Funfest Mission
03 - The PWT
04 - Join Avenue
05 - Black City
06 - White Forest
07 - Medal Rally
08 - Xtransceiver
09 - Hidden Grottoes

0x24E97 - "Regions" Response

00 - No Response
01 - Kanto
02 - Johto
03 - Hoenn
04 - Sinnoh
05 - Unova

0x24E98 - "Bad thing" Response

00 - No Response
01 - Forget it and move on
02 - Dwell on it

0x24E99 - "Behavior" Response

00 - No Response
01 - Impatient
02 - Laid-back

0x24E9A - "Conversation" Response

00 - No Response
01 - Talk
02 - Listen

0x24E9B - "Secret" Response

00 - No Response
01 - Keep it to myself
02 - Tell someone about it

Activities Structure

0x00 - Activity 1 Type

0x01 - Activity 2 Type

0x02 - Activity 3 Type

0x03 - Activity 4 Type

0x04/5 - Activity 1 Date

0x06/7 - Activity 2 Date

0x08/9 - Activity 3 Date

0x0A/B - Activity 4 Date

Date: Not sure, it looks to be proportional to days + a bunch depending on the number.

194E = 10/14/12

18F5 = 7/21/12 (194E-18F5 = 89, difference between dates is 85. 4 discrepancy)

18F4 = 7/20/12

18E3 = 7/3/12

Activities:

00 - No Activity (none)
01 - I defeated the Champion and entered the Hall of Fame on %DATE!
02 - I battled in the Battle Subway on %DATE!
03 - I shot a movie in Pokestar Studios on %DATE!
04 - I took a Battle Test at the Battle Institute on %DATE!
05 - I participated in the Pokemon Musical on %DATE!
06 - I entered someone's world in the Entralink on %DATE!
07 - I tried a Funfest mission on %DATE!
08 - I hatched a Pokemon Egg on %DATE!
09 - I raised a Pokemon's level on %DATE!
0A - I was watching TV on %DATE!
0B - I checked inside a trash can on %DATE!
0C - I gave one of my Pokemon a nickname on %DATE!
0D - I caught a Pokemon with a Super Rod on %DATE!
0E - I was looking for hidden items on %DATE!
0F - I had a Pokemon Fossil restored on %DATE!
10 - I was communicating in the Union Room on %DATE!
11 - I was trading Pokemon through the GTS on %DATE!
12 - I was trading Pokemon through GTS Negotiations on %DATE!
13 - I was watching somebody's Battle Video on %DATE!
14 - I was battling via Random Matchup on %DATE!
15 - I took a Ferris-wheel ride on %DATE!
16 - I was challenging the Black Tower on %DATE!
17 - I was challenging the Pokemon World Tournament on %DATE!
18 - I was raising the popularity of Join Avenue on %DATE!
19 - I was playing a game on the Xtransceiver on %DATE!
1A - I was communicating in the Wi-Fi Club on %DATE!
1B - I was looking for Hidden Grottoes on %DATE!
1C - I connected to the Pokemon Dream World using Game Sync on %DATE!
1D - I received a Mystery Gift from a deliveryman on %DATE!
1E - I was communicating via Infrared Connection on %DATE!
1F - I caught a wild Pokemon on %DATE!
20 - I was challenging the White Treehollow on %DATE!

Trivia, Activities, (unlikely for Stats) are most likely transferred with Metadata so that when met on GTS / etc they are able to do every interaction. Further research in that area is needed, if cared.

Location Metadata for Countries and Sub-locations

Edited by Kaphotics
Link to comment
Share on other sites

RAM Editing and AR code development:

The relevant data can be edited in real time in game @ ~0x2229CB0 in US games. Go ahead and change certain values and see how the game reacts!

Here's a template for a code (containing a pointer) that will do a targeted overwrite.

94000130 FFFB0000
B2000024 00000000
X0024FCC YYYYYYYY
D2000000 00000000

The pointer points to the start of the first occupant, which is 0x246AC in the save file. So say you want to edit Helper 1's sprite.

New Pointer = 0x920 + 0x24CCC + 0x2A

(default pointer-start in sav + helper1offset + spriteoffset)

Pointer: 0x25616

X of pointer becomes 2, to write only 1 byte

YYYYYYYY becomes 0000005A, to set spriteID to 5A - Skyla

Code becomes:

94000130 FFFB0000
B2000024 00000000
20025616 0000005A
D2000000 00000000

Activate in game and Skyla will be your first assistant. Note however you have to change her name and responses too, use the same method though :)

skyla%20helper.png

Bonus:

(Select) Avenue Shops are always in stock!

94000130 FFFB0000
B2000024 00000000
0002507C 00000000
00025140 00000000
00025204 00000000
000252C8 00000000
0002538C 00000000
00025450 00000000
00025514 00000000
000255D8 00000000
D2000000 00000000

Activate once you start talking to the shopkeeper. Once you buy an item, you can activate again! Even though it says it's not in stock, you can still purchase.

rebuy.png

Edited by Kaphotics
Link to comment
Share on other sites

Somehow the game re-generated NPC visitors so I was able to figure out that structure too for the most part. 95% of the structure of this block is known.

Here's a little demonstration of what you can really edit and customize :D

[video=youtube;d7bID4ZrVfc]

Link to comment
Share on other sites

I'm curious about one thing - Serebii lists several inventory items for shops that aren't actually available (for example, Training Lv. 20 and Wonder Lunch). Presumably the names/effect descriptions are extracted from the game. Is it possible to get these (even if it's by some future event), or are they completely unobtainable?

Link to comment
Share on other sites

For "Occupant Structure", the "0x2E - Shop Choices" and "0xB4 - Shop Type, appearance, and NPC position" are on 16 bits (1 in cheat code).

Do you have more information for "Visitor Structure" ? I don't know how to open pjv files. I see you video.

Thx.

Link to comment
Share on other sites

I'm curious about one thing - Serebii lists several inventory items for shops that aren't actually available (for example, Training Lv. 20 and Wonder Lunch). Presumably the names/effect descriptions are extracted from the game. Is it possible to get these (even if it's by some future event), or are they completely unobtainable?

Yeah they're there in the text file. I wasn't able to discern how to change my shop inventory. IIRC I changed my shop level and it didn't change my purchaseable choices, so it must be either in another hex or determined another way.

For "Occupant Structure", the "0x2E - Shop Choices" and "0xB4 - Shop Type, appearance, and NPC position" are on 16 bits (1 in cheat code).

Do you have more information for "Visitor Structure" ? I don't know how to open pjv files. I see you video.

Thx.

HxD can open these files. I just assigned a file extension to differentiate the different file types stored in the block.

Yeah some of those are 16bits in size. As for their choices / position / appearance, I couldn't figure out how that worked other than that's what they influenced. I set em to 0 and other values and saw that they differed from the original Join Avenue.

Visitor structure is essentially the same as Occupant. I discovered it after I mapped the Occupant structure, and I was lazy.

0x00 - Visitor Name (0xE, 7 + terminator)
0x0E - Country
0x0F - SubLocation
0x10 - Visitor Shout (0x10, 8 characters)
0x22 - Gender (0x10 female, 0x00 male)
0x24 - Trainer ID
0x28 - Played Time
0x2A - Visitor Sprite (overworld) In general, via this sheet order.
0x2C - Restriction for Recruitment (based on level)
0x2E - Shop Choices (8 bits, not sure how it picks)
0x34 - Pokemon in Pokedex, uses lowest 2 bits from 0x35 as the uppermost bits for this number.
0x35 - Favorite Pokemon (0x2, Note: lowest 2 bits are used by 0x34. Chatot 0x1B9 = 0x6E4 (with pokedex=18d)
0x39 - Medals
0x3A - Adventure Start
0x3C - Hall of Fame Entry
0x40 - Link Trades (signed 0x4)
0x44 - Nicknames Given (signed 0x4)
0x48 - Customers (signed 0x4)
0x4C - Money Spent (signed 0x4)
0x50 - Passerby Met (signed 0x4)
0x54 - Link Battles (signed 0x4)
0x58 - Pokemon Caught (signed 0x4)
0x5C - Eggs Hatched (signed 0x4)
0x60 - Visitor Trivia Responses (see trivia structure)
0x70 - Visitor Activities (recent happenings)
0x7C - 00000000
0x80 - Greeting (0x10, 8 characters)
0x90 - Farewell (0x10, 8 characters)
0xA0 - IsPlayer Flag (00 - NPC, 01 - Met Human player)
0xA3 - Year Met
0xA4 - Month Met
0xA5 - Day Met
0xAB - Player's Join Avenue Rank (not in yours)

Might be wrong on some of those (I copy pasted the Occupant structure and removed anything Store related). They're the same file size so (when recruited) the game just converts a visitor to an Occupant.

Edited by Kaphotics
Link to comment
Share on other sites

Yeah they're there in the text file. I wasn't able to discern how to change my shop inventory. IIRC I changed my shop level and it didn't change my purchaseable choices, so it must be either in another hex or determined another way.

I have been researching about this and found that 0xB4 is not only the Shop Type and appearance, it is the inventory for the store, here is what I have...

Rank 1

Black 1 Inventory
0x1 Raffle Shop
0xB Salon
0x15 Market
0x1F Florist
0x29 Dojo
0x33 Nursery
0x3D Antique
0x47 Cafe

White 1 Inventory
Add 0x50 to the Black 1 Inventory Values
0x51 Raffle Shop
0x5B Salon
0x65 Market
0x6F Florist
0x79 Dojo
0x83 Nursery
0x8D Antique
0x97 Cafe

Black 2 Inventory
Add 0xA0 to the Black 1 Inventory Values
0xA1 Raffle Shop
0xAB Salon
0xB5 Market
0xBF Florist
0xC9 Dojo
0xD3 Nursery
0xDD Antique
0xE7 Cafe

White 2 Inventory
Add 0xF0 to the Black 1 Inventory Values
0xF1 Raffle Shop
0xFB Salon
0x105 Market
0x10F Florist
0x119 Dojo
0x123 Nursery
0x12D Antique
0x137 Cafe

For each rank add 0x1 to each value

Rank 10 White 2 Raffle Store 0xF1 + 0x9 = 0xFA

Rank 6 Black 2 Salon 0xAB + 0x5 = 0xB0

Edited by RubenPikachu
Link to comment
Share on other sites

Nice!

quick way to see the level/shop/version:

Version = SV / 0x50, 0=black, 1=white, 2=black2, 3=white2

Level = ((SV % 0x50) -1) % 0xA, 0-9 = (1,10)

Type = (SV % 0x50) / 0xA, 0=raffle, 1=salon, 2 = market, 3=florist, 4 = dojo, 5=nurse, 6=antique, 7=cafe

How to rebuild from choices:

Version*0x50 + Type*0xA + Level

say b2 level 8 salon:

2*0x50+1*0xA+8=0x00B2

check: 0xAB+(7 levels) = 0xB2

Link to comment
Share on other sites

One question - you say that memory allocations are for 8 visitors and 12 fans, yet I seem to get 12 visitors and 8 fans max at a time. Visitor = ones you get from PGL, Wi-FI and IR (real-world people), fans = NPCs that the game generates randomly each day, correct?

Link to comment
Share on other sites

One question - you say that memory allocations are for 8 visitors and 12 fans, yet I seem to get 12 visitors and 8 fans max at a time. Visitor = ones you get from PGL, Wi-FI and IR (real-world people), fans = NPCs that the game generates randomly each day, correct?

In the save file there's not enough room for 12 visitors and 8 fans. If it was like that, the first occupant would start at 0x24838 and everything else wouldn't fit. There's 0x620 for Visitors (0xC4 * 8), and 0x6C0 for Fans (0x60 * 12).

Link to comment
Share on other sites

In the save file there's not enough room for 12 visitors and 8 fans. If it was like that, the first occupant would start at 0x24838 and everything else wouldn't fit. There's 0x620 for Visitors (0xC4 * 8), and 0x6C0 for Fans (0x60 * 12).

Well, apparently, PGL and GTS "visitors" count as NPC fans, at least they seem to. I went on Magnemite coiling rampage today and got 11 "visitors" to my JA. After confirming that I've got them as visitors, I've reloaded the save made right after exiting GTS, opened it in HxD... and found all my "visitors" in the fan section.

The structure seems to be generally the same as with NPC fans, but 0x0E/F locations have origin bytes, 0x50/1 - id of their pokemon. I don't have much time to look further right now, but I've extracted my JA data here: http://www.mediafire.com/?23lap6qjctc6jtn

Link to comment
Share on other sites

It appears that while sprites are 16 bit values, Join avenue handles only 8-bit. (there are well over 255 sprites, the last sprite being an 8 bit value is Erika (RBY Gym Leader))

If you try to go from FF00 to 0101, it handles it as 0100 (Ram view reverses the order of bytes so a pointer of 02 20 4C C0 appears as C0 4C 20 02)

Dunno how to fix this but I really wanted some R/S gym leaders in my join avenue.

Link to comment
Share on other sites

  • 2 weeks later...

Would someone be able to provide an example of the code needed to set the first Visitor to one of the game's default visitors. Specifically, one of the nurses, such as:

* Name: Jess

* Sprite: Nurse

* Shop Type: Nursery

(or at least according to Serebii.net)

For those of us who do not speak Action Replay coder. Pretty please!

(I just need the Nurses to finish my shop order. None have appeared as a result of GTS dream world visitors or trader partners:

#1 - B2 Beauty

#2 - W2 Beauty

#3 - B1 Dojo

#4 - B2 Dojo

#5 - W1 Dojo

#6 - W2 Dojo

#7 - B2 Nurse

#8 - W2 Nurse)

Link to comment
Share on other sites

Would someone be able to provide an example of the code needed to set the first Visitor to one of the game's default visitors.

Why don't you just fill up every shop with a keeper, and then change their roles with an AR code? Much simpler that way. Use the method I posted to get a new pointer value for the code, then set the shop setting with the other part of the line.

It's just simple math which can be done with a calculator or websites like Wolfram Alpha.

0x920 + 0x246AC + 0xB4 = XXXXX

(helper 1), and choose the shop type.

94000130 FFFB0000
B2000024 00000000
10025080 000000B4
10025144 00000104
10025208 00000032
100252CC 000000D2
10025390 00000082
10025454 00000122
10025518 000000DC
100255DC 0000012C
D2000000 00000000

Changes all the shop types, keeps the good inventories but their level isn't set. You don't have to do any referring, just use the services

We don't know how visitor shop open preference is determined, so this is the best you will get.

Link to comment
Share on other sites

Why don't you just fill up every shop with a keeper, and then change their roles with an AR code? Much simpler that way.[/Quote]

I already have 6 of the 8 shops exactly the way that I need them. Additionally, from what I can tell, the only way to get a Nurse is from the in-game characters. The amount of GTS trades and visitors from the Dream World that I have racked up has convinced me of that. I understand that your suggestion maybe easier but if definitely appears to be far from legit.

Use the method I posted to get a new pointer value for the code, then set the shop setting with the other part of the line.[/Quote]

I already stated that this guide makes little sense to me.

It's just simple math which can be done with a calculator or websites like Wolfram Alpha.

0x920 + 0x246AC + 0xB4 = XXXXX

(helper 1), and choose the shop type.

94000130 FFFB0000
B2000024 00000000
10025080 000000B4
10025144 00000104
10025208 00000032
100252CC 000000D2
10025390 00000082
10025454 00000122
10025518 000000DC
100255DC 0000012C
D2000000 00000000

Changes all the shop types, keeps the good inventories but their level isn't set. You don't have to do any referring, just use the services

We don't know how visitor shop open preference is determined, so this is the best you will get.

Is the code that I inquired about or the one you suggested?

Link to comment
Share on other sites

Nurse is a possible female player Trainer Class, in the "Restoring" section of the OP my example has a picture with a nurse player.

Meh

The one I suggested. This is because fabricating a trainer from the ground up is too much work (for me at least). The memory write AR code type would be the way of doing it.

Link to comment
Share on other sites

Nurse is a possible female player Trainer Class, in the "Restoring" section of the OP my example has a picture with a nurse player.

Sorry, I should be clear that I meant the Nurse shop class. I have traded with over 20 different GTS players who had Nurse sprites hoping that would work.

This is because fabricating a trainer from the ground up is too much work (for me at least). The memory write AR code type would be the way of doing it.

I am competing in VGC this year and am super cautious about which codes that I will use with my game. Additionally, I am talking about the game's released NPC's for Join Avenue. There data is already all stored in the game. There has to be away of injecting one of those characters without a crazy long code. Anyways, the short of it is that YOU the creator of the code says its too complicated to do.

Link to comment
Share on other sites

Correct me if I'm wrong, but once your Join Avenue is at around Rank 15 you can do nursery by normal means. I accidentally added 920 twice to one of the addresses and ended up making my Join Avenue have a strange appearance (the textures turned white and the shops turned into stones!). You can save the game, then soft reset and it would still remain like this.

Can you provide a sav so we can see what caused this?

Link to comment
Share on other sites

  • 3 weeks later...
  • 2 weeks later...

Hey guys,

I found a code online to get the join avenue level up to max, but this brings it up to level 255, which I don't want. I believe that the max legit level it can get up to is 100, so could I possibly have a cheat which does this? I don't understand how to do action replay codes from the information here, I tried, but to no avail :)

Many Thanks in advance!

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...