• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

SoulSilver hack: Pokémon MindCrystal

1
Posts
11
Years
  • Seen Apr 21, 2024
I am up to the Lance tag battle against Ariane/Ariana and it just crashes every time. Is there a fix for this?
 

Lunos

Random Uruguayan User
3,114
Posts
15
Years
Next version will contain several updates, but 2 of them are out of this world as far as Gen IV hacks are concerned!
Here's a teaser for what is arguably the first Gen 4.5 Pokémon Hack:

I think that so far, Mikelan98 (Light Platinum DS' creator) was apparently the only person that got to expand the amount of Pokémon in HG/SS successfully, I'm glad that you also found out the method.
Say, would it be too much to ask for a tutorial on how to do it at some point in the future?

Anyways, keep up with the awesome work. Now that I got access to an Android device and DraStic, I'm definitely going to try MindCrystal again ♥

EDIT: Btw, I noticed that in this post inside the Hack's thread in ProjectPokémon you called "Blue" to the FR/LG Female Main Character who replaces Red if you play as Kris, I don't know if that feature is still incorporated but she's called "Leaf".
Blue, the character she's clearly based off, belongs to the Pokémon Adventures Manga and doesn't exist inside the Videogames' Canon.
 
Last edited:
53
Posts
9
Years
  • Seen Aug 26, 2022
I think that so far, Mikelan98 (Light Platinum DS' creator) was apparently the only person that got to expand the amount of Pok?mon in HG/SS successfully, I'm glad that you also found out the method.
Say, would it be too much to ask for a tutorial on how to do it at some point in the future?

Anyways, keep up with the awesome work. Now that I got access to an Android device and DraStic, I'm definitely going to try MindCrystal again ?

I'm not promising anything but I can tell all the files you need to work on that I discovered so far:
Code:
493 to 649 Pok?mon:

a002			Base Stats			508 to 675 files
a004			Pok?mon sprites			2964 to 3900 files
a005			Sprites altitude		1976 to 2600 files
a020			Pok?mon mini-icons		550 to 1442 files
a033			Level-up moves			508 to 675 files
a034			Evolution			508 to 675 files
a069			Footprints			497 to 653 files
a081			Various overworlds
a114			Alternate forms sprites
a133			Pok?dex areas			3962 to 5210 files
a180			Pok?mon sprites parameters	43966 to 57850 bytes
waza_oshie		Move Tutors			4040 to 5376 bytes
pms			Egg Species			1016 to 1350 bytes
tamago			Egg moves relearner		508 to 675 files (custom file)


467 to 559 moves:

a000							501 to 560 files
a001			Move Effect sub-sub-IDs		add as many as necessary (a/0/3/0 => overlay 18 => a/0/0/1)
a010			Move animations			501 to 560 files
a011			Moves				471 to 560 files
a029			Particles			485 to 577 files
a030			Move Effect IDs			add as many as necessary


Normally I wouldn't do that, but for this time I'm going to post what I modified so far ASM-wise so that the Pok?dex works properly:
Code:
@Read 649 Pok?mon:
@Create save:
lrpl_020298CE:
	NOP
	LDR		R4, [R0, #0x5C]
	MVN		R3, R3
	MOV		R1, R1, LSL R2
	AND		R3, R4, R3
	ORR		R1, R3, R1
	STR		R1, [R0, #0x5C]
	LDMFD	SP!, {LR}
	LDMFD	SP!, {R3-R4}
	BX		LR

	
@Secondary gender:
xrpl_0202946C:
	NOP
	ADD		R5, R5, #0xC4
	SUB		R0, R0, #1
	BX		LR
	
	
@Toggle between primary and secondary gender:
xrpl_0202947A:
	NOP
	MOV		R0, #0x60
	MUL		R0, R7, R0
	ADD		R1, R5, R0
	BX		LR
	
	
@Duplicated caught Pok?mon:
xrpl_02029BF0:
	NOP
	ADD		R3, R5, #0x1E4
	MOV		R1, R4, LSR #3
	ADD		R3, R1, R3
	AND		R1, R4, #7
	MOV		R2, #1
	MOV		R1, R2, LSL R1
	LDRB	R2, [R3]
	ORR		R2, R1, R2
	CMP		R4, #7
	ORRLS	R2, R2, #1
	STRB	R2, [R3]
	MOV		R1, #1
	MOV		R1, R1, LSL R0
	ADD		LR, LR, #0xE
	BX		LR
	
	
@Alternate forms (Unown):
lrpl_0202955C:
	NOP
	MOVEQ	R1, #0x63
	MOVNE	R1, #0x6A
	B		.AltUnown
	
lrpl_0202957E:
	NOP
	MOVEQ	R2, #0x63
	MOVNE	R2, #0x6A
.AltUnown:
	ADD		R3, LR, #2
	LDMFD	SP!, {LR}
	BX		R3
	
xrpl_020295A8:
	NOP
@	CMP		R0, #0
	MOVEQ	R0, #0x63
	MOVNE	R0, #0x6A
	BX		LR

xrpl_02029DB2:
	NOP
	MOV		R0, #0x18C
	BX		LR
	
xrpl_02029DBE:
	NOP
	MOV		R0, #0x1A8
	BX		LR

xrpl_02029DCC:
	NOP
	MVN		R0, #0
	STR		R0, [R4, #0x188]
	MOV		R0, #0xFF
	ADD		LR, LR, #0x16
	BX		LR
	
xrpl_0202A132:
	NOP
	MOV		R0, #0x6A
	B		.SpriteUnown
	
xrpl_0202A13C:
	NOP
	MOV		R0, #0x63
.SpriteUnown:
	ADD		R1, R5, R4
	BX		LR
	
	
@(Bad) Egg sprite (Y coordinate):
xrpl_020702BE:
xrpl_020702C4:
xrpl_02070998:
xrpl_0207099E:
	NOP
	BX		LR
	
xrpl_020702A6:
	NOP
	CMP		R4, R2
	BXLE	LR
	ADD		R2, R1, #0xE5
	CMP		R4, R2				@Egg is considered as species 650
	ADDEQ	LR, LR, #0xDA
	BXEQ	LR
	ADD		R1, R1, #0xE6
	CMP		R4, R1				@Bad Egg is considered as species 651
	ADD		LR, LR, #0xEA
	ADDNE	LR, LR, #0x66
	BX		LR
	
xrpl_02070980:
	NOP
	CMP		R5, R2
	BXLE	LR
	ADD		R2, R1, #0xE5
	CMP		R5, R2				@Egg Y coordinate
	ADDEQ	LR, LR, #0x7C
	BXEQ	LR
	ADD		R1, R1, #0xE6
	CMP		R5, R1				@Bad Egg Y coordinate
	ADD		LR, LR, #0x84
	ADDNE	LR, LR, #0x36
	BX		LR
	
	
@Pok?dex loads with 649 entries:
xrpl_021F7B8A_ov_12:
xrpl_021F7BA8_ov_12:
	NOP
	LDR		R1, =0x512
	MOV		R0, #0x25
	BX		LR
	
xrpl_021F7B9A_ov_12:
	NOP
	MOV		R0, R6
	B		.Read649
	
xrpl_021F7BB8_ov_12:
	NOP
	MOV		R0, R4
.Read649:
	LDR		R2, =0x512
	BX		LR
	
	
@Others:
xrpl_02029908:
	NOP
	SUB		R2, R4, #2
	ADD		R5, R5, #0x64
	BX		LR

xrpl_0202A032:
	NOP
	LDRB	R1, [R2, #0x64]
	BX		LR

xrpl_0202A078:
	NOP
	LDRB	R1, [R1, #0x64]
	BX		LR
	
xrpl_0202A0E6:
	NOP
	ADD		R2, R2, #0x64
	MOV		R1, #1
	BX		LR
	
	
@Write Pok?dex:
xrpl_021F7E94_ov_12:
	NOP
	LDRB	R0, [R4]
	STRB	R0, [R5]
	LDRB	R0, [R4, #1]
	STRB	R0, [R5, #1]
	BX		LR
	
xrpl_021F7EA4_ov_12:
	NOP
	MOV		R0, #2
	B		.SeenCaught
	
xrpl_021F7EB0_ov_12:
	NOP
	MOV		R0, #1
.SeenCaught:
	STRB	R0, [R5, #2]
	BX		LR
	
xrpl_021F7EB8_ov_12:
	NOP
	ADD		R4, R4, #2
	ADD		R5, R5, #3
	BX		LR
	
	
@Read last seen Pok?mon:
xrpl_021F85D8_ov_12:
	NOP
	MOV		R3, #3
	MUL		R1, R3, R1
	ADD		R2, R2, R1
	BX		LR
	
xrpl_021F85DE_ov_12:
	NOP
	ADD		R3, R2, #0x870
	LDRB	R1, [R3]
	LDRB	R3, [R3, #1]
	MOV		R3, R3, LSL #8
	ORR		R1, R3, R1
	BX		LR
	
	
@Read Pok?dex (=0x1028 or =0x102A):
xrpl_021E6B62_ov_12:
	NOP
	MOV		R2, R1
	ADD		R2, R0, R2
	BX		LR
	
xrpl_021E6B66_ov_12:
xrpl_021E6C36_ov_12:
xrpl_021F1CFE_ov_12:
xrpl_021F1FB6_ov_12:
	NOP
	LDR		R0, =0x1548
	LDRB	R0, [R2, R0]
	BX		LR
	
xrpl_021E6C1C_ov_12:
	NOP
	ADD		R1, R7, R0
	STR		R1, [SP, #4]
	MOV		R0, R0, LSL #1
	ADD		R1, R7, R0
	BX		LR
	
xrpl_021E6C22_ov_12:
	NOP
	LDRH	R1, [R1, R0]
	BX		LR
	
xrpl_021EE832_ov_12:
	NOP
	ADD		R1, R6, R0
	BX		LR
	
xrpl_021EE836_ov_12:
xrpl_021EE970_ov_12:
xrpl_021EECFC_ov_12:
	NOP
	LDR		R0, =0x1548
	LDRB	R0, [R1, R0]
	BX		LR
	
xrpl_021EE96A_ov_12:
	NOP
	MOV		R0, R2
	MOV		R7, R1
	BX		LR
	
xrpl_021EEAE4_ov_12:
xrpl_021EEB94_ov_12:
	NOP
	MOV		R2, R7
	MOV		R1, #0
	BX		LR
	
xrpl_021EEAF4_ov_12:
xrpl_021EEBA4_ov_12:
	NOP
	LDR		R2, =0x1548
	LDR		R1, [SP, #0x10]
	LDRB	R2, [R3, R2]
	BX		LR
	
xrpl_021EECF8_ov_12:
	NOP
	MOV		R0, R7
	ADD		R1, R5, R0
	BX		LR

xrpl_021F14BA_ov_12:
	NOP
	ADD		R1, R5, R0
	STR		R1, [SP, #4]
	MOV		R4, R4, LSL #1
	ADD		R0, R5, R0
	BX		LR
	
xrpl_021F14BE_ov_12:
	NOP
	LDR		R1, =0x512
	CMP		R4, R1
	LDRH	R1, [R0, R4]
	MOVCS	R1, #0
	BX		LR
	
xrpl_021F14F8_ov_12:
	NOP
	LDR		R0, =0x1548
	MOV		R1, R4, LSR #1
	ADD		R1, R5, R1
	LDRB	R0, [R1, R0]
	BX		LR

xrpl_021F1CFA_ov_12:
xrpl_021F1FB2_ov_12:
	NOP
	MOV		R0, R2
	ADD		R2, R5, R0
	BX		LR
	
xrpl_021F2DCA_ov_12:
	NOP
	ADD		R3, R0, R1
	BX		LR
	
xrpl_021F2DCE_ov_12:
	NOP
	LDR		R1, =0x1548
	LDRB	R1, [R3, R1]
	BX		LR
	
xrpl_021F84DC_ov_12:
	NOP
	MOV		R0, R0, LSL #1
	ADD		R1, R4, R0
	BX		LR
	
xrpl_021F84E0_ov_12:
	NOP
	SUB		R4, R1, R4
	LDR		R0, =0x512
	CMP		R4, R0
	LDR		R4, =0x1028
	LDRH	R0, [R1, R4]
	MOVCS	R0, #0
	LDMFD	SP!, {R4, LR}
	BX		LR
	
@Cursor:
lrpl_021F84FC_ov_12:
	NOP
	LDR		R2, =PseudoStack
	STR		R8, [R2]
	LDRB	R8, [R0, #1]
	MOV		R8, R8, LSL #8
	LDRB	R2, [R0]
	ORR		R2, R8, R2
	MOVEQ	R4, R2				@First seen Pok?mon in Pok?dex order
	LDR		R8, =PseudoStack
	LDR		R8, [R8]
	CMP		R1, R2
	ADD		R2, LR, #2
	B		.SeenPokemon
	
lrpl_021F850C_ov_12:
	NOP
	ADD		R3, R3, #1
	ADD		R0, R0, #3
	CMP		R3, R5
	MOV		R2, LR
.SeenPokemon:
	LDMFD	SP!, {LR}
	BX		R2
	
xrpl_021F854A_ov_12:
	NOP
	ADD		R1, R4, R1
	LDRB	R0, [R1]
	LDRB	R1, [R1, #1]
	MOV		R1, R1, LSL #8
	ORR		R1, R0, R1
	LDR		R0, =0x1850
	LDRB	R0, [R5, R0]
	BX		LR
	
xrpl_021F855A_ov_12:
	NOP
	ADD		R1, R4, R1
	LDRB	R2, [R1]
	LDRB	R1, [R1, #1]
	MOV		R1, R1, LSL #8
	ORR		R2, R1, R2
	MOV		R0, R0, LSL #1
	LDR		R1, =0x1028
	ADD		R1, R0, R1
	STRH	R2, [R5, R1]
	MOV		R0, R0, LSR #1
	ADD		R0, R5, R0
	ADD		LR, LR, #4
	BX		LR
	
xrpl_021F856A_ov_12:
	NOP
	LDR		R1, =0x872
	LDRB	R2, [R4, R1]
	LDR		R1, =0x1548
	ADD		R4, R4, #3
	STRB	R2, [R0, R1]
	BX		LR


@Alternate forms graphics:
xrpl_020741E2:
	NOP
	LDR		R2, =0x289
	CMP		R4, #0xC9			@Unown
	ADDEQ	R4, R2, #2
	MOV		R1, #0x15C
	ADD		R1, R1, #3			@Castform
	CMP		R4, R1
	ADDEQ	R4, R2, #0x1D
	ADD		R1, R1, #0x23		@Deoxys
	CMP		R4, R1
	ADDEQ	R4, R2, #0x20
	CMP		R4, #0x19C			@Burmy
	ADDEQ	R4, R2, #0x23
	ADD		R1, R1, #0x1B		@Wormadam
	CMP		R4, R1
	ADDEQ	R4, R2, #0x25
	ADD		R1, R1, #8			@Cherrim
	CMP		R4, R1
	ADDEQ	R4, R2, #0x27
	ADD		R1, R1, #1			@Shellos
	CMP		R4, R1
	ADDEQ	R4, R2, #0x28
	ADD		R1, R1, #1			@Gastrodon
	CMP		R4, R1
	ADDEQ	R4, R2, #0x29
	ADD		R1, R1, #0x38		@Rotom
	CMP		R4, R1
	ADDEQ	R4, R2, #0x2A
	ADD		R1, R1, #8			@Giratina
	CMP		R4, R1
	ADDEQ	R4, R2, #0x2F
	CMP		R4, #0x1EC			@Shaymin
	ADDEQ	R4, R2, #0x30
	ADD		R1, R1, #0x3F		@Basculin
	CMP		R4, R1
	ADDEQ	R4, R2, #0x31
	ADD		R1, R1, #5			@Darmanitan!!!!!!!!!!!!!!
	CMP		R4, R1
	ADDEQ	R4, R2, #0x32
	ADD		R1, R1, #0x1E		@Deerling
	CMP		R4, R1
	ADDEQ	R4, R2, #0x33
	ADD		R1, R1, #1			@Sawsbuck
	CMP		R4, R1
	ADDEQ	R4, R2, #0x36
	ADD		R1, R1, #0x37		@Tornadus
	CMP		R4, R1
	ADDEQ	R4, R2, #0x39
	ADD		R1, R1, #1			@Thundurus
	CMP		R4, R1
	ADDEQ	R4, R2, #0x3A
	ADD		R1, R1, #3			@Landorus
	CMP		R4, R1
	ADDEQ	R4, R2, #0x3B
	ADD		R1, R1, #1			@Kyurem
	CMP		R4, R1
	ADDEQ	R4, R2, #0x3C
	ADD		R1, R1, #1			@Keldeo
	CMP		R4, R1
	ADDEQ	R4, R2, #0x3E
	CMP		R4, #0x288			@Meloetta
	ADDEQ	R4, R2, #0x3F
	ADD		R1, R1, #2			@Genesect
	CMP		R4, R1
	ADDEQ	R4, R2, #0x40
	CMP		R4, R2				@Check if this is an Alternate form
	ADD		R4, R0, R4
	ADD		LR, LR, #0x74
	SUBLS	R4, R4, R0
	ADD		R0, R4, #7
	LDMHIFD	SP!, {R4, LR}
	BX		LR


@Icons Graphics:
xrpl_02074264:
	NOP
	LDR		R4, =GenderBit
	LDRB	R4, [R4]			@Get gender bit
	CMP		R4, #0
	LDRNE	R4, =0x2CE
	ADDNE	R0, R4, R0
	LDMFD	SP!, {R4, LR}
	BX		LR
	
	
@Castform and Cherrim:
xrpl_02074292:
	NOP
	LDR		R0, =0x2AD
	B		.GraphicFiles
	
xrpl_020742AE:
	NOP
	LDR		R0, =0x2B7
.GraphicFiles:
	ADD		R0, R2, R0
	BX		LR


@Egg Icons:
lrpl_0207436A:
	NOP
	CMP		R0, R1
	ADDEQ	R0, R1, #0xA1		@Manaphy Egg icon
	ADDNE	R0, R1, #0xA0		@Egg icon
	MOV		R1, LR
	LDMFD	SP!, {LR}
	BX		R1
	
	
@Alternate forms palette:
lrpl_02074384:
	NOP
	CMP		R0, #0xC9			@Unown
	ADDEQ	R0, R2, #2
	MOV		R3, #0x15C
	ADD		R3, R3, #3			@Castform
	CMP		R0, R3
	ADDEQ	R0, R2, #0x1D
	ADD		R3, R3, #0x23		@Deoxys
	CMP		R0, R3
	ADDEQ	R0, R2, #0x20
	CMP		R0, #0x19C			@Burmy
	ADDEQ	R0, R2, #0x23
	ADD		R3, R3, #0x1B		@Wormadam
	CMP		R0, R3
	ADDEQ	R0, R2, #0x25
	ADD		R3, R3, #8			@Cherrim
	CMP		R0, R3
	ADDEQ	R0, R2, #0x27
	ADD		R3, R3, #1			@Shellos
	CMP		R0, R3
	ADDEQ	R0, R2, #0x28
	ADD		R3, R3, #1			@Gastrodon
	CMP		R0, R3
	ADDEQ	R0, R2, #0x29
	ADD		R3, R3, #0x38		@Rotom
	CMP		R0, R3
	ADDEQ	R0, R2, #0x2A
	ADD		R3, R3, #8			@Giratina
	CMP		R0, R3
	ADDEQ	R0, R2, #0x2F
	CMP		R0, #0x1EC			@Shaymin
	ADDEQ	R0, R2, #0x30
	ADD		R3, R3, #0x3F		@Basculin
	CMP		R0, R3
	ADDEQ	R0, R2, #0x31
	ADD		R3, R3, #5			@Darmanitan!!!!!!!!!!!!!!
	CMP		R0, R3
	ADDEQ	R0, R2, #0x32
	ADD		R3, R3, #0x1E		@Deerling
	CMP		R0, R3
	ADDEQ	R0, R2, #0x33
	ADD		R3, R3, #1			@Sawsbuck
	CMP		R0, R3
	ADDEQ	R0, R2, #0x36
	ADD		R3, R3, #0x37		@Tornadus
	CMP		R0, R3
	ADDEQ	R0, R2, #0x39
	ADD		R3, R3, #1			@Thundurus
	CMP		R0, R3
	ADDEQ	R0, R2, #0x3A
	ADD		R3, R3, #3			@Landorus
	CMP		R0, R3
	ADDEQ	R0, R2, #0x3B
	ADD		R3, R3, #1			@Kyurem
	CMP		R0, R3
	ADDEQ	R0, R2, #0x3C
	ADD		R3, R3, #1			@Keldeo
	CMP		R0, R3
	ADDEQ	R0, R2, #0x3E
	CMP		R0, #0x288			@Meloetta
	ADDEQ	R0, R2, #0x3F
	ADD		R3, R3, #2			@Genesect
	CMP		R0, R3
	ADDEQ	R0, R2, #0x40
	CMP		R0, R2				@Check if this is an Alternate form
	ADD		R0, R1, R0
	SUBLS	R0, R0, R1
	ADD		R1, LR, #0x6E
	LDMFD	SP!, {LR}
	BX		R1
	
	
@Palette is 4 bits in size (2 for males and 2 for females)
lrpl_020743FA:
	NOP
	ANDS	R2, R0, #1			@Check if the Pok?mon number is odd
	MOV		R0, R0, LSR #1
	LDRB	R0, [R1, R0]
	MOVNE	R0, R0, LSR #4
	LDR		R2, =GenderBit
	LDRB	R3, [R2]			@Get gender bit
	CMP		R3, #0
	MOV		R3, #0
	STRB	R3, [R2]			@Reset GenderBit first byte
	MOVNE	R0, R0, LSR #2
	AND		R0, R0, #3
	LDMFD	SP!, {LR}
	BX		LR
	
	
@Check if Pok?mon was seen:
xrpl_0202A3C2:
	NOP
	LDRB	R2, [R2, #0x64]
	BX		LR
	
xrpl_0202A494:
	NOP
	LDRB	R3, [R3, #0x64]
	BX		LR
	
@Spinda first form seen:
xrpl_0202A3D2:
xrpl_0202A4A4:
	NOP
	STR		R0, [R5, #0x184]
	BX		LR
	
@If Pok?mon was already seen at least once:
xrpl_0202A3E8:
	NOP
	LDRB	R2, [R2, #0xC4]
	BX		LR
	
xrpl_0202A4BA:
	NOP
	LDRB	R0, [R0, #0xC4]
	BX		LR
	
@End Pok?mon seen:
xrpl_0202A412:
	NOP
	MOV		R1, #7
	B		.EndPokemonSeen
	
xrpl_0202A524:
	NOP
	ORR		R2, R3, R2
.EndPokemonSeen:
	ADD		R5, R5, #0x64
	BX		LR
	
	
@Pok?dex
xrpl_021F14C8_ov_12:
	NOP
	LDR		R0, [R0]
	LDR		R2, =PokedexGender
	ADD		R0, R0, #0xC4
	STR		R0, [R2]			@Store offset
	SUB		R0, R0, #0xC4
	MOV		R2, #0
	BX		LR
	
	
xrpl_021F14E4_ov_12:
	NOP
	LDR		R0, =PokedexGender
	STR		R1, [R0, #4]		@Store Pok?mon temporarily
	LDR		R3, [R0]			@Get offset
	SUB		R1, R1, #1
	MOV		R1, R1, LSR #3		@Get byte offset
	ADD		R3, R1, R3
	STR		R3, [R0]			@Store offset
	LDR		R1, [R0, #4]
	SUB		R1, R1, #1
	AND		R1, R1, #7
	MOV		R3, #1
	MOV		R3, R3, LSL R1
	LDR		R1, [R0]
	LDRB	R1, [R1]			@Get Pok?mon offset
	TST		R1, R3
	LDR		R1, [R0, #4]		@Retrieve Pok?mon
	LDR		R0, =GenderBit
	MOVEQ	R3, #0				@Male bit
	MOVNE	R3, #1				@Female bit
	STRB	R3, [R0]
	MOV		R0, R5
	MOV		R3, R6
	BX		LR
	

xrpl_02029C3C:
	NOP
	ADD		R3, R3, #0xC4
	LDR		R1, =PokedexGender
	STR		R3, [R1, #8]		@Offset
	STR		R0, [R1, #0xC]		@Bit
	MOV		R1, #1
	LDRB	R3, [R3]
	BX		LR
	
	
@Second registered gender:
xrpl_02029C5C:
	NOP
	LDRB	R2, [R2, #0x124]
	BX		LR
	
	
@Zone tab:
xrpl_021F3A76_ov_12:
	NOP
	LDR		R3, =PokedexGender
	LDR		R0, [R3, #8]		@Get offset
	LDRB	R0, [R0]			@Get byte
	LDR		R3, [R3, #0xC]		@Get bit to compare with
	TST		R0, R3
	LDR		R3, =GenderBit
	MOVEQ	R0, #0				@Male bit
	MOVNE	R0, #1				@Female bit
	STRB	R0, [R3]
	MOV		R0, R7
	MOV		R3, #1
	BX		LR
	
	
@Weight tab:
xrpl_021F4A26_ov_12:
xrpl_021F4A34_ov_12:
	NOP
	LDR		R3, =PokedexGender
	LDR		R0, [R3, #8]		@Get offset
	LDRB	R0, [R0]			@Get byte
	LDR		R3, [R3, #0xC]		@Get bit to compare with
	LDR		R2, =GenderBit
	TST		R0, R3
	MOVEQ	R0, #0				@Male bit
	MOVNE	R0, #1				@Female bit
	STRB	R0, [R2]
	MOV		R0, R5
	LDRH	R1, [R5, R1]
	BX		LR
	
	
@Forms tab:
xrpl_021F5CFE_ov_12:
	NOP
	LDR		R2, =PokedexGender
	LDR		R0, [R2, #8]		@Get offset
	CMP		R7, #0
	ADDNE	R0, R0, #0x60
	LDRB	R0, [R0]			@Get byte
	LDR		R1, [R2, #0xC]		@Get bit to compare with
	TST		R0, R1
	LDR		R2, =GenderBit
	MOVEQ	R0, #0				@Male bit
	MOVNE	R0, #1				@Female bit
	STRB	R0, [R2]
	MOV		R0, R5
	MOV		R1, R4
	BX		LR
	
	
@Comparison tab:
xrpl_021F0E00_ov_12:
	NOP
	MOV		R0, R5
	LDSB	R2, [R5, R2]
	LDR		R1, =GenderBit
	STRB	R2, [R1, #1]
	BX		LR


xrpl_021F63F0_ov_12:
	NOP
	LDR		R1, =GenderBit
	LDRB	R1, [R1, #1]
	CMP		R1, #0
	LDR		R1, =PokedexGender
	LDR		R0, [R1, #8]		@Get offset
	ADDNE	R0, R0, #0x60
	B		.CompareFiles
	
xrpl_021F63FC_ov_12:
	NOP
	LDR		R1, =GenderBit
	LDRB	R1, [R1, #1]
	CMP		R1, #0
	LDR		R1, =PokedexGender
	LDR		R0, [R1, #8]		@Get offset
	ADDEQ	R0, R0, #0x60
.CompareFiles:
	LDRB	R0, [R0]			@Get byte
	LDR		R1, [R1, #0xC]		@Get bit to compare with
	TST		R0, R1
	LDR		R1, =GenderBit
	MOVEQ	R0, #0				@Male bit
	MOVNE	R0, #1				@Female bit
	STRB	R0, [R1]
	MOV		R0, R4
	LDSB	R2, [R4, R2]
	BX		LR
	

xrpl_021F640A_ov_12:
	NOP
	LDR		R0, =GenderBit
	MOV		R1, #0
	STR		R1, [R0]			@Reset GenderBit
	MOV		R0, R4
	MOV		R1, #0xE
	BX		LR
	
	
	
	

xrpl_0224E830_ov_0C:
	NOP
	LDR		R6, =FormeStack
	AND		R1, R1, #0x1F
	CMP		R5, #0
	STREQB	R1, [R6]
	CMP		R5, #0x180
	STREQB	R1, [R6, #1]
	MOV		R1, #0xC0
	MOV		R6, R0
	BX		LR

	
xrpl_0224D504_ov_0C:
	NOP
	MOV		R1, #1
	STRB	R1, [R4, R0]
	LDR		R3, =FormeStack
	MOV		R4, #0
	STR		R4, [R3]
	BX		LR

	
xrpl_02263DB6_ov_0C:
	NOP
	MOV		R2, R2, LSR #0x1F
	STRB	R2, [R3, #5]
	LDR		R5, =FormeStack
	ADD		R2, R1, #0x26
	LDRB	R2, [R4, R2]
	AND		R2, R2, #0x1F
	CMP		R6, #0
	STREQB	R2, [R5]
	CMP		R6, #0x180
	STREQB	R2, [R5, #1]
	BX		LR

	
lrpl_0223BC12_ov_0C:
	NOP
	STMFD	SP!, {R3}
	STRB	R1, [R0, R2]
	LDR		R3, =FormeStack
	STRB	R1, [R3, #2]
	LDMFD	SP!, {R3}
	LDMFD	SP!, {LR}
	BX		LR
	
	
xrpl_02074668:
	NOP
	MUL		R0, R4, R0
	ADD		R0, R5, R0
	LDR		R3, =FormeStack
	LDRB	R5, [R3, #2]
	CMP		R5, #0
	MOVEQ	R5, R7
	MOVNE	R5, R4
	LDR		R3, =OffsetParty
	CMP		R5, #5
	STRLS	R0, [R3, R5, LSL #2]
	BX		LR
	
	
xrpl_0226709A_ov_0C:
	NOP
	CMP		R1, #0
	MOVNE	R1, #1
	LDR		R0, =FormeStack
	STRB	R1, [R0, #3]
	LDR		R0, =0x10203
	MOV		R1, #0x4D
	BX		LR
	
	
xrpl_020741DE:
	NOP
	STMFD	SP!, {R2-R3}
	LDR		R2, =FormeStack
	LDR		R3, =0x15F
	CMP		R4, R3
	BNE		.CherrimDarmanitan
	LDRB	R3, [R2, #2]
	CMP		R3, #0
	LDREQB	R3, [R2, #3]
	BEQ		.SuccessCastform
	LDR		R2, =OffsetParty
	LDR		R3, [R2]
	CMP		R3, R5
	MOVEQ	R3, #0
	BEQ		.SuccessCastform
	LDR		R3, [R2, #4]
	CMP		R3, R5
	MOVEQ	R3, #1
	BNE		.NCGRCalc
.SuccessCastform:
	LDR		R2, =FormeStack
	LDRB	R0, [R2, R3]
	CMP		R0, #3
	MOVHI	R0, #0
	B		.NCGRCalc
.CherrimDarmanitan:
	ADD		R3, R3, #0x46
	CMP		R4, R3
	ADDNE	R3, R3, #0x86		@Darmanitan
	CMPNE	R4, R3
	BNE		.NCGRCalc
	LDRB	R3, [R2, #2]
	CMP		R3, #0
	LDREQB	R3, [R2, #3]
	BEQ		.SuccessCherrimDarmanitan
	LDR		R2, =OffsetParty
	LDR		R3, [R2]
	CMP		R3, R5
	MOVEQ	R3, #0
	BEQ		.SuccessCherrimDarmanitan
	LDR		R3, [R2, #4]
	CMP		R3, R5
	MOVEQ	R3, #1
	BNE		.NCGRCalc
.SuccessCherrimDarmanitan:
	LDR		R2, =FormeStack
	LDRB	R0, [R2, R3]
	CMP		R0, #1
	MOVHI	R0, #0
.NCGRCalc:
	LDMFD	SP!, {R2-R3}
	CMP		R0, #0
	ADDEQ	LR, LR, #0x78
	BXEQ	LR
	LDR		R1, =0x15F			@Castform
	CMP		R4, R1
	ADDEQ	R1, R1, #0xA7
	ADDEQ	R1, R1, #0xA7
	BEQ		.NCGR
	ADD		R1, R1, #0x46		@Cherrim
	CMP		R4, R1
	ADDEQ	R1, R1, #0x89
	ADDEQ	R1, R1, #0x89
	BEQ		.NCGR
	ADD		R1, R1, #0x86		@Darmanitan
	CMP		R4, R1
	ADDEQ	R1, R1, #0x97
.NCGR:
	ADDEQ	R0, R0, R1			@Add form index
	LDMEQFD	SP!, {R4, LR}
	BX		LR
	
	
xrpl_0207447C:
xrpl_02220AEA_ov_08:
	NOP
	STMFD	SP!, {R0, R2-R3}
	LDR		R2, =FormeStack
	LDR		R3, =0x15F
	CMP		R0, R3
	BNE		.Cherrim3
	LDRB	R0, [R2, #2]
	CMP		R0, #0
	MOVNE	R0, R7
	LDREQB	R0, [R2, #3]
	CMP		R0, #1
	BHI		.DefaultNCLR
	LDRB	R1, [R2, R0]
	CMP		R1, #3
	MOVHI	R1, #0
	B		.DefaultNCLR
.Cherrim3:
	ADD		R3, R3, #0x46
	CMP		R0, R3
	ADDNE	R3, R3, #0x86		@Darmanitan
	CMPNE	R0, R3
	BNE		.DefaultNCLR
	LDRB	R0, [R2, #2]
	CMP		R0, #0
	MOVNE	R0, R7
	LDREQB	R0, [R2, #3]
	CMP		R0, #1
	BHI		.DefaultNCLR
	LDRB	R1, [R2, R0]
	CMP		R1, #1
	MOVHI	R1, #0
.DefaultNCLR:
	LDR		R0, =PseudoStack
	STR		LR, [R0]
	LDMFD	SP!, {R0, R2-R3}
	LDR		LR, =0x2074365
	BLX		LR
	LDR		LR, =PseudoStack
	LDR		LR, [LR]
	BX		LR 

	
@Castform and Darmanitan alternate types
xrpl_02220BD8_ov_08:
	NOP
	LDRH	R1, [R4, #4]
	LDR		R3, =0x15F
	CMP		R1, R3
	BNE		.TryDarmanitan
	MOV		R3, #0				@Normal-type icon
	LDR		R1, [R0]
	LDRB	R1, [R1, #0x11]
	CMP		R1, #1
	BHI		.FormFirstType
	LDR		R5, =FormeStack
	LDRB	R1, [R5, R1]
	CMP		R1, #1
	MOVEQ	R3, #0xA			@Fire-type icon
	CMP		R1, #2
	MOVEQ	R3, #0xB			@Water-type icon
	CMP		R1, #3
	MOVEQ	R3, #0xF			@Ice-type icon
.FormFirstType:
	STRB	R3, [R4, #0x14]
	B		.FormSecondType
.TryDarmanitan:
	ADD		R3, R3, #0xCC
	CMP		R1, R3
	BNE		.ReturnType
	MOV		R3, #0xA			@Fire-type icon
	STRB	R3, [R4, #0x14]
	LDR		R1, [R0]
	LDRB	R1, [R1, #0x11]
	CMP		R1, #1
	BHI		.FormSecondType
	LDR		R5, =FormeStack
	LDRB	R1, [R5, R1]
	CMP		R1, #1
	MOVEQ	R3, #0xE			@Psychic-type icon
.FormSecondType:
	STRB	R3, [R4, #0x15]
.ReturnType:
	LDR		R1, =0x2004
	MOV		R5, R0
	BX		LR
	
	
.data
.balign 1
FormeStack:
	.byte 0x0
	.byte 0x0
	.byte 0x0
	.byte 0x0
	
GenderBit:
	.byte 0x0
	.byte 0x0
	.byte 0x0
	.byte 0x0
	
.balign 4
OffsetParty:
	.word 0x0
	.word 0x0
	.word 0x0
	.word 0x0
	.word 0x0
	.word 0x0
	
PseudoStack:
	.word 0x0
	
PokedexGender:
	.word 0x0
	.word 0x0
	.word 0x0
	.word 0x0

Btw, I noticed that in this post inside the Hack's thread in ProjectPok?mon you called "Blue" to the FR/LG Female Main Character who replaces Red if you play as Kris, I don't know if that feature is still incorporated but she's called "Leaf".
Blue, the character she's clearly based off, belongs to the Pok?mon Adventures Manga and doesn't exist inside the Videogames' Canon.

Yes the feature is still there, and I'm also very well aware of the issue you pointed out but here's what Bulbapedia has to say on the matter:
(Note that as far as I am concerned, by rule of being the original material Japanese canon trumps International canon whenever there is a contradiction between the two.)
Bulbapedia said:
Name origin

Although "Leaf" is by far the name she is most commonly known by among English-speaking fans, she has no official given name. The name's popularity stems from its usage as a placeholder name for the character in Trainer data on the ROMs of Pok?mon FireRed and LeafGreen, but this derivation is contentious because, by way of contrast, the equivalent name for the rival Blue ("Terry") does not match any of his canonical names. That inconsistency leads some fans to prefer the name of her Adventures' counterpart as a more logical choice ("Green"/"Blue"JP&KOR).

I would also add that Occam's razor would tell that the most logical name for the female deuteragonist of FR/LG should be a name based on a color like her counterpart (Red) and rival (Green), in that case Blue should be the more logical choice over Leaf.
Not only that but if instead we followed a naming based on the elements rather than the colors, then for Blue to be called Leaf, Red and Green would also have to be called Fire and (presumably) Water respectively, which in turn creates another inconsistency since for that hypothesis to be logical Green would have had to be called Water since Red & Green, but in this scenario Green would have most likely be called Leaf.
 

gail

Having no limitation as limitation
76
Posts
7
Years
Question 1) Any way to play this in english?
Question 2)Are you gonna add pkmn from 6th&7th gen?
 
2
Posts
6
Years
  • Age 28
  • Seen Nov 5, 2017
man, first, thanks for you guys awesome work, but the game broke at the union cave entrance where i got caught by a double battle (the text message comes out lagging then it freeze)
I used your patch on meromero lasted v3.0.1 (whose the link leads me to v3.0.2).
 
32
Posts
12
Years
  • Seen Apr 17, 2020
man, first, thanks for you guys awesome work, but the game broke at the union cave entrance where i got caught by a double battle (the text message comes out lagging then it freeze)
I used your patch on meromero lasted v3.0.1 (whose the link leads me to v3.0.2).

Sorry, it should be fixed now. There's a new download link in my post. There were a LOT of things there that shouldn't be there under the hood. Encounter data and trainer pokemon data were not the standard files of mindcrystal, that's fixed now. The trainers in question you mentioned work now, I tested them myself.
 
2
Posts
6
Years
  • Age 28
  • Seen Nov 5, 2017
Sorry, it should be fixed now. There's a new download link in my post. There were a LOT of things there that shouldn't be there under the hood. Encounter data and trainer pokemon data were not the standard files of mindcrystal, that's fixed now. The trainers in question you mentioned work now, I tested them myself.

Thanks a lot man! {XD}
 
34
Posts
9
Years
  • Age 27
  • Seen Sep 4, 2023
I really like this hack but i need it in english.. I'm not really good with french..
 
18
Posts
11
Years
  • Seen Aug 31, 2020
I love this Hack, HG/SS are the best DS pkm games IMO

Pros (only my favourites)
- new fairy type <3
-Females can now pass egg moves as well, eliminating all impossible egg moves combinations.
-Incenses babies are now the default base form. (never understanded baby pkms)
- Miltank and Tauros are now considered the same species for breeding purposes. ( good finally fixed a lack in a pokemon lore)
-TMs are now reusable. (Another "Wow")
- new HPbar and title screen i love them

Cons
- no english (but is not so important ) edit: Found later a patch :)
- The new evs system..
Why is possible max all stats? IMO this ruins an important and funny aspect of the pokemon games :(
that ruins the great potential of this hack
 
Last edited:
66
Posts
7
Years
  • Age 32
  • Seen Oct 18, 2023
- The new evs system..
Why is possible max all stats? IMO this ruins an important and funny aspect of the pokemon games :(
that ruins the great potential of this hack

This is how it used to be in the original Gameboy games. Before EVs there was Stat Exp., and you could max out Stat Exp. in every stat.
 
Last edited:
18
Posts
11
Years
  • Seen Aug 31, 2020
This is how it used to be in the original Gameboy games. Before EVs there was Stat Exp., and you could max out Stat Exp. in every stat.
pkm games have evolved, this is a cross system different from evs and stat exp.
this game update some mechanism adding fairy type and tm reusable and revert the EVs system to an old one...
One of the most beautiful feature of pokemon is the possibility to trade and transfert pokemon from a game to a newer one. 4th generation is different from the first 2, pokemon caught in this game can be traded in other games (like dpp or S/M) other games have the normal and original system that make this "out of place"
Other things the metagame, halve all the possibilities and the differences between pokemons... but this is my opinion and i don't want start a war for this
 
18
Posts
11
Years
  • Seen Aug 31, 2020
sorry for my words but was only my opinion, i prefer the original system
for this reason i've already edited for myself the evs system and now is like the original ;)

@MeroMero, i really appreciate your work
this is the first serious NDS hack i've never seen, and as an old but beginner"hacker" i know that there are not many tools or tutorial for edit nds roms and this is not simple
for these reason are required experience and passion, you own them.
Good luck :)
 
7
Posts
6
Years
  • Age 29
  • Seen Feb 17, 2023
Hello good day, I have a question how super luck works. I have my murkrow with such ability but I do not see any change.
He is first of the team
 

Trainer 766

Guest
0
Posts
Hello good day, I have a question how super luck works. I have my murkrow with such ability but I do not see any change.
He is first of the team

Super Luck increases crit ratio in battle and increases shiny chance in the overworlds if you have a Pok?mon with such ability at the front of party.
 
Back
Top