Kajetan Johannes Hammerle 6 years ago
commit
974d58c8b0
35 changed files with 772 additions and 0 deletions
  1. BIN
      .DS_Store
  2. BIN
      Mehr Speicherbarer RAM/.DS_Store
  3. 78 0
      Mehr Speicherbarer RAM/Englisches Original/How To Apply.txt
  4. BIN
      Mehr Speicherbarer RAM/Englisches Original/Save_and_load.out
  5. BIN
      Mehr Speicherbarer RAM/Englisches Original/Var_loader.out
  6. 217 0
      Mehr Speicherbarer RAM/Englisches Original/Variable Fix.tmb
  7. BIN
      Mehr Speicherbarer RAM/Englisches Original/var_decrypt.out
  8. BIN
      Mehr Speicherbarer RAM/Englisches Original/var_store.out
  9. 19 0
      Mehr Speicherbarer RAM/readme.txt
  10. BIN
      Mehr Speicherbarer RAM/save_load_out.out
  11. 36 0
      Mehr sichere Flags/Englisches Original/save_flags.asm
  12. BIN
      Mehr sichere Flags/Englisches Original/save_flags.bin
  13. BIN
      Mehr sichere Flags/code.out
  14. 14 0
      Mehr sichere Flags/readme.txt
  15. BIN
      Physisch-Speziell-Split/Physisch_Speziell_Split_Feuerrot_Bild_Daten.ips
  16. BIN
      Pokemon Decrypting/DV_lesen_neu.bin
  17. BIN
      Pokemon Decrypting/DVs_auf_31.out
  18. BIN
      Pokemon Decrypting/EVs_auslesen.out
  19. BIN
      Pokemon Decrypting/decrypter.out
  20. BIN
      Pokemon Decrypting/dv_lesen_alt.bin
  21. 17 0
      Pokemon Decrypting/dvs-31.asm
  22. 45 0
      Pokemon Decrypting/dvs_lesen_alt.asm
  23. 37 0
      Pokemon Decrypting/dvs_lesen_neu.asm
  24. BIN
      Pokemon Decrypting/encrypter.out
  25. 20 0
      Pokemon Decrypting/readme.txt
  26. 2 0
      TMs unbegrenzt/readme.txt
  27. BIN
      Tag-Nacht-Schritte-System/.DS_Store
  28. 49 0
      Tag-Nacht-Schritte-System/Altes System/schritte_zeitsystem.asm
  29. 2 0
      Tag-Nacht-Schritte-System/Bei_Benutzung_mit_DNS.txt
  30. 31 0
      Tag-Nacht-Schritte-System/readme.txt
  31. 91 0
      Tag-Nacht-Schritte-System/schritte_zeitsystem.asm
  32. BIN
      Tag-Nacht-Schritte-System/schritte_zeitsystem.bin
  33. 7 0
      Tag-Nacht-Schritte-System/zeiten_DNS.txt
  34. 39 0
      gehaltene_items.txt
  35. 68 0
      offsets.txt

BIN
.DS_Store


BIN
Mehr Speicherbarer RAM/.DS_Store


+ 78 - 0
Mehr Speicherbarer RAM/Englisches Original/How To Apply.txt

@@ -0,0 +1,78 @@
+Even though the source code tells you how, Better use this here with the step-by-step 
+for both supported verisons.
+
+Saving the new Block:
+	Needed: Save_and_load.out, ROM to apply
+
+	Common to both versions
+	1.  Copy the contents to a free location in your ROM, 4 bytes aligned.
+   	    Write down the location (called loc through this guide).
+
+	For Emerald 
+	2.  At loc + 0x14, place the reverse pointer for the correct return address
+            (ready to place should be 6d 27 15 08)
+
+	3.  At loc + 0x48, place place the reverse pointer for the correct return address
+            (ready to place should be Ad 20 2e 08)
+
+	4.  At 0x15276a place 00 47
+	4.5 At 0x15279c place the reversed pointer (loc+0x1 in reverse)
+
+	5.  At 0x152ea0 place 00 48 00 47 (loc+0x19 in reverse)
+
+	For Fire Red
+
+	2.  At 0x0d983a place 00 47
+	2.5 At 0x0d986c place the reversed pointer (loc+0x1 in reverse)
+
+	3.  At 0x0D9EE4 place 00 48 00 47 (loc+0x19 in reverse)
+
+This will allow RAM 0x0203e000 to be saved to the Flash ROM.
+Not happy with the RAM Address? Know a better one? Then all you need to do is change
+(loc + 0x40) to the new RAM Address you wish to save.
+
+
+This second part fixes the Variables, according to this Rules:
+0x4000-0x4fff are the old ones. Use with caution
+0x5000-0x57ff == 0x5800-0x5fff The variables in the new RAM Area
+0x6000-0x6fff are Byte-address to the above variables ([0x5000] = [0x6000] OR [0x6001]<<8)
+0x7000-0x73ff are Word address to the above variables ([0x7000] = [0x5000] or [0x5001]<<10)
+0x7400-0x7fff are useless, as non-variables.
+
+This part of the fix is to use that area as Variables. The first part saved the area for us
+to use, so you can simply write with the "WriteByteTooOffeset" command to use it as savable
+pool of data. If you wish to keep the old variable system intact, ignore this last part.
+
+"Fixing" the Variables:
+	Needed: Var_decrypt.out, Var_loader.out, Var_store.out, ROM to apply
+
+	Common to all ROMS
+	1. copy Var_decrypt.out content to a 4byte aligned free location (called loc_decrypt)
+	2. copy Var_loader.out content to a 4byte aligned free location (called loc_loader)
+	3. copy Var_store.out content to a 4byte aligned free location (called loc_store)
+
+	For Emerald
+	4.   at loc_decrypt + 0x44, place 9c 93
+
+	5.   at 0x09D648  place 70 b5
+	5.2  at 0x09d64e  place 0e 1c
+	5.4  at 0x09D682 place 10 47
+	5.6  at 0x09D688 place 70 bd
+	5.8  at 0x09D690 place (loc_decrypt+0x1 in reverse)
+
+	6.   at 0x09d6a0 place 00 49 08 47 (loc_loader+0x1 in reverse)
+
+	7.   at 0x09d6b0 30 b5 05 04 28 0c
+	7.5  at 0x09d6be 01 49 08 47 00 00 (loc_store+0x1 in reverse)
+
+	For Fire Red
+	4.   at 0x06e4f4 place 10 47
+	4.5  at 0x06e508 place (loc_decrypt+0x1 in reverse)
+
+	5.   at 0x06e574 place 00 49 08 47 (loc_loader+0x1 in reverse)
+
+	6.   at 0x06e584 30 b5 05 04 28 0c
+	6.5  at 0x06e592 01 49 08 47 00 00 (loc_store+0x1 in reverse)
+
+If, for some reason, you changed the RAM stored Address, fix it by placing the new address at
+(loc_decrypt + 0x48)

BIN
Mehr Speicherbarer RAM/Englisches Original/Save_and_load.out


BIN
Mehr Speicherbarer RAM/Englisches Original/Var_loader.out


+ 217 - 0
Mehr Speicherbarer RAM/Englisches Original/Variable Fix.tmb

@@ -0,0 +1,217 @@
+.align 2
+.thumb
+
+/*A very pertinent problem arose from the study of Variables. The fact is, we
+never knew much about them, and just used them. But in the end, those variables
+were, in fact, pieces of other program's memory. Solution is to find a location
+where we can lay our own variables, and use those to our advantage.
+
+Every pokemon game accesses variables through the same mechanism every time.
+Variable is accessed by using a call to a specialized function, that because of
+its lack of boundaries, let us use every piece of code there as our own.
+
+The proposed solution is to find a large RAM address (0x1000 long) and use it to
+make a place for 0x800 variables (something like 0x5000 to 0x57ff.) This should
+be enough for most games, and they're perfectly safe. Then, during the Save and
+Load Routines, add a new module to load from 0xe01f000 (bank1, slot f), that is
+unused by the game, and can carry that much information.
+
+Also proposed, to solve the problem, is to use any variable from 0x5800 to 0x5fff
+as a mirror to the first pair, any variable from 0x6000 to 0x6fff as a byte-load
+for the 0x5000 variables, and any from the 0x7000 as a word-load for the 0x5000
+variable family, and 0x7400-0x7fff as flag-load for some select few.*/
+
+/*first, and most important, we need the 0x5000 flags stored somewhere, even if 
+the game didn't save them. That is where the Var-Decrypt come in.*/
+/*var decrypt is located at 0x0806E454. Because most of the code is harmless in
+its own, we will only change the part that loads variables above 0x4000 and below
+0x8000. That is located at 0x6e4f2. We change 0x6e4f4 to 0x10 47, and place the 
+pointer to this function at 0x6e508
+Even though Emerald code is different, it's in fact much simpler. As such all
+old rules apply. at 0809D682 place 10 47 and at 0809D690 the pointer*/
+/*begin*/
+Var_decrypt_change:		mov r1, #0x50
+						lsl r1, r1, #0x8
+						sub r1, r6, r1  /*if it is lower than 0x5000, it will be less than 0*/
+						cmp r1, #0x0
+						blt is_4xxx
+						mov r2, #0x80
+						lsl r2, r2, #0x4
+						cmp r1, r2		/*r2 = 0x800*/
+						blt load_5xxx
+						sub r1, r1, r2
+						cmp r1, r2     /*r2 = 0x800, this is the mirrored line*/
+						blt load_5xxx
+						sub r1, r1, r2
+						lsl r2, #0x1
+						cmp r1, r2
+						blt load_6xxx
+						sub r1, r1, r2
+						lsr r2, r2, #0x2
+						cmp r1, r2
+						blt load_7xxx
+						mov r0, #0x0
+						pop {r4-r6,pc}
+						
+is_4xxx:				ldr r2, mask_9x
+						lsl r1, r6, #0x1
+						add r1, r2, r1
+						ldr r0, [r0]
+						add r0, r0, r1
+						pop {r4-r6,pc}
+						
+load_7xxx:				lsl r1, r1, #0x1	/*r1<<2 = word address */
+load_5xxx:				lsl r1, r1, #0x1	/*r1 << 1 = halfword address*/
+load_6xxx:				ldr r0, new_var_location	/*no shift means byte address*/
+						add r0, r0, r1
+						pop {r4-r6,pc}
+.hword 0x0000
+mask_9x: .word 0xffff9000						/*for Emerald, it's 0xffff939c*/
+new_var_location:	.word 0x0203e000
+/*end*/
+
+/*the other way to load variables is through the Variable Loader. But that raises
+a problem: It only loads halfwords. To solve that problem, at 0806e574, place
+0049 0847 pointer to this
+In Emerald, place at 0809d6a0 the 0049 0847 pointer to this
+*/
+/*begin*/
+VarLoader_change:		cmp r0, #0x0
+						beq no_variable_loaded
+						mov r1, #0x60
+						lsl r1, r1, #0x8
+						sub r1, r4, r1
+						cmp r1, #0x0
+						blt var_load_hword
+						mov r2, #0x80
+						lsl	r2, r2, #0x8
+						cmp r4, r2
+						bge var_load_hword
+						lsr r2, r2, #0x3
+						sub r1, r1, r2
+						cmp r1, #0x0
+						blt var_load_byte
+						ldr r0, [r0]
+						pop {r4,pc}
+						
+no_variable_loaded:		add r0, r4, #0x0
+						pop {r4, pc}
+						
+var_load_byte:			ldrb r0, [r0]
+						pop {r4,pc}						
+						
+var_load_hword:			ldrh r0, [r0]
+						pop {r4,pc}
+.hword 0x0000						
+/*end*/
+
+/*var store will be fixed for Storing only 0x4000-0x6fff.
+That way, you can have byte storage for variables
+In Fire Red, place at 0x0806E584 30 b5 05 04 28 0c
+				   at 0x0806E592 01 49 08 47 00 00 pointer
+In Emerald, place at 0x0809d6b0 30 b5 05 04 28 0c
+				  at 0x0809d6be 01 49 08 47 00 00 pointer
+				  */
+/*begin*/
+Var_store_cont:			cmp r0, #0x0
+						beq no_store
+						
+						mov r1, #0x60
+						lsl r1, r1, #0x8
+						sub r1, r5, r1
+						cmp r1, #0x0
+						blt var_store_hword
+						mov r2, #0x80
+						lsl	r2, r2, #0x8
+						cmp r5, r2
+						bge var_store_hword
+						lsr r2, r2, #0x3
+						sub r1, r1, r2
+						cmp r1, #0x0
+						blt var_store_byte
+no_store:				pop {r4-r5,pc}
+												
+var_store_byte:			strb r4, [r0]
+						pop {r4-r5,pc}						
+						
+var_store_hword:		strh r4, [r0]
+						pop {r4-r5,pc}									
+/*end*/
+/*finally, we need to save those variables from being purged at the end of the 
+game. So, we will modify the Save file to allow us to keep the variables 
+somewhere where nobody gets hurt (bank 0x1f)*/
+/*this first code is the save one, and allows us to save the new variable
+location at bank 0x1f. for that, we need to edit the code at 080D9838, right
+after the standart save is finished. Lucky, that is a load that has a pointer!
+Then, change 0x080d983a with 00 47 and 0x080D986C with the pointer to this.
+In Emerald, change 0x0815276a with 00 47 and 0x0815279C with the pointer */
+/*begin*/
+Save_vars:			mov r0, #0x1f
+					ldr r1, variable_new_addr
+					bl SetFlash4k
+					ldr r1, Save_ret
+					sub r6, #0x4
+					ldr r0, [r6]
+					add r6, #0x4
+					bx r1
+.hword 0x0000
+Save_ret: .word 0x080D983d /*in Emerald, change this to 0815276d*/
+				
+/*end*/
+/*then we also need the Load code. This one is more wordy, as we need to 
+load byte by byte the entire content we need from the Flash.
+In Emerald, the location to change is 0x08152ea0
+In fire red, the location to change is 0x080D9EE4
+place a 0048 0047 pointer. We'll take care of exiting the
+function*/
+/*begin*/
+Load_Vars:		bl SetSecondBank
+				ldr r0, variable_new_addr
+				mov r1, #0xf0
+				lsl r1, r1, #0x8
+				orr r3, r1
+				mov r2, #0x10
+				lsl r2, r2, #0x8
+byte_load_loop: ldrb r1, [r3]
+				strb r1, [r0]
+				add r0, #0x1
+				add r3, #0x1
+				sub r2, #0x1
+				cmp r2, #0x0
+				bgt byte_load_loop
+				add r0, r5, #0x0
+				pop {r1}
+				mov r8, r1
+				pop {r4-r7, pc}
+.hword 0x0000				
+/*end*/
+variable_new_addr:	.word 0x0203e000
+
+SetFlash4k:		ldr r3, set_flash_addr
+				bx r3
+set_flash_addr: .word 0x081DF071 	/*for emerald, 0x082E20Ad*/				
+
+SetSecondBank:	mov r3, #0x0e
+				mov r2, #0x55
+				lsl r3, r3, #0x18
+				lsl r1, r2, #0x8	/*r1 = 5500*/
+				orr r1, r3 			/*r1 = 0e005500*/
+				orr r1, r2 			/*r1 = 0e005555*/
+				mov r0, #0xAA
+				strb r0, [r1]
+				mov r2, #0x2a 
+				lsl r2, r2, #0x8	/*r2 = 2a00*/
+				orr r2, r0 			/*r2 = 2aaa*/
+				orr r2, r3 			/*r2 = 0e002aaa*/
+				mov r0, #0x55
+				strb r0, [r2]		
+				mov r0, #0xb0		
+				strb r0, [r1]
+				mov r0, #0x1
+				strb r0, [r3]
+				bx lr
+				
+
+
+
+

BIN
Mehr Speicherbarer RAM/Englisches Original/var_decrypt.out


BIN
Mehr Speicherbarer RAM/Englisches Original/var_store.out


+ 19 - 0
Mehr Speicherbarer RAM/readme.txt

@@ -0,0 +1,19 @@
+Zuerst muss dieser folgende Code an eine freie Stelle kopiert werden: 
+Datei: save_load_out.out
+
+1F200F49 00F01EF8 0249043E 30680436
+08470000 619A0D08 00F018F8 0848F021 
+09020B43 10221202 19780170 01300133
+013A002A F8DC281C 02BC8846 F0BD0000
+00E00302 004B1847 09331E08 0E235522
+1B061102 19431143 AA200870 2A221202
+02431A43 55201070 B0200870 01201870
+70470000
+
+Position notieren und merken.
+
+Nun bei D9A5E den Code 00 68 mit 00 47 ersetzen.
+Bei D9A90 den alten Pointer DC520003 mit dem neuen Pointer des Codes ersetzen. (Reversed + 1)
+Abschließend bei DA108 den alten Code 012008BC 9846F0BC mit 00480047 und dem Offset reversed + 19 ersetzen.
+Der RAM bei 0x0203e000 wird nun im Flash ROM gespeichert!
+

BIN
Mehr Speicherbarer RAM/save_load_out.out


+ 36 - 0
Mehr sichere Flags/Englisches Original/save_flags.asm

@@ -0,0 +1,36 @@
+main:
+	mov r0, #0x9
+	lsl r0, r0, #0x8
+	cmp r4, r0
+	blt normal
+	mov r0, #0x19
+	lsl r0, r0, #0x8
+	cmp r4, r0
+	bge noget
+	mov r0, #0x9
+	lsl r0, r0, #0x8
+	sub r4, r4, r0
+	add r6, r4, #0x0
+	str r4, [sp, #0x0]
+	ldr r0, .memoryblock
+	lsr r1, r6, #0x3
+	add r0, r0, r1
+exit:	pop {r4-r6}
+	pop {r1}
+	bx r1
+normal:	ldr r0, .normalmemoryblock
+	ldr r0, [r0, #0x0]
+there:	lsr r1, r6, #0x3
+	mov r3, #0xEE
+	lsl r3, r3, #0x4
+	add r1, r1, r3
+	add r0, r0, r1
+	b exit
+noget:	add r0, r4, #0x0
+	b there
+
+.align
+.memoryblock:
+.word 0x0203e200
+.normalmemoryblock:
+.word 0x03005008

BIN
Mehr sichere Flags/Englisches Original/save_flags.bin


BIN
Mehr sichere Flags/code.out


+ 14 - 0
Mehr sichere Flags/readme.txt

@@ -0,0 +1,14 @@
+An einer freien Stelle den folgenden Code (beiliegende Datei) einfügen:
+
+09200002 84420EDB 19200002 844212DA
+09200002 241A261C 00940848 F1084018
+70BC02BC 08470648 0068F108 EE231B01
+C9184018 F4E7201C F7E7C046 00E20302
+584F0003
+
+Der Pointer am Schluss verweist auf den normalen Memory Block.
+Im Englischen 03005008, im Deutschen allerdings 03004F58.
+
+Nun bei 6E53A den alten Code 0548 00780128 08D00128 mit 0148 00470000 Offset reversed + 1 ersetzen
+
+Die sicheren neuen Flags sind nun bei 900 - 18FF (Im RAM zu finden bei 0203e200).

BIN
Physisch-Speziell-Split/Physisch_Speziell_Split_Feuerrot_Bild_Daten.ips


BIN
Pokemon Decrypting/DV_lesen_neu.bin


BIN
Pokemon Decrypting/DVs_auf_31.out


BIN
Pokemon Decrypting/EVs_auslesen.out


BIN
Pokemon Decrypting/decrypter.out


BIN
Pokemon Decrypting/dv_lesen_alt.bin


+ 17 - 0
Pokemon Decrypting/dvs-31.asm

@@ -0,0 +1,17 @@
+push {r0-r1, lr}
+ldr r0, .wusler1
+ldr r0, [r0]
+mov r1, #0xFF
+strb r1, [r0, #0x4]
+mov r1, #0xFF
+strb r1, [r0, #0x5]
+mov r1, #0xFF
+strb r1, [r0, #0x6]
+mov r1, #0xFF
+strb r1, [r0, #0x6]
+mov r1, #0x3F
+strb r1, [r0, #0x7]
+pop {r0-r1, pc}
+
+.wusler1:
+.word 0x0203f414

+ 45 - 0
Pokemon Decrypting/dvs_lesen_alt.asm

@@ -0,0 +1,45 @@
+push {r0-r5, lr}
+ldr r0, .wusler1
+ldr r0, [r0]
+ldr r1, .wusler2
+ldrb r2, [r1]
+mov r4, #0x5
+ldrb r3, [r1]
+cmp r3, #0x2 
+bgt .unterfunktion4
+ldrh r2, [r0, #0x4]
+mul r3, r3, r4
+lsr r2, r3
+main:
+cmp r2, #0x7F
+bgt .unterfunktion1
+cmp r2, #0x3F
+bgt .unterfunktion2
+cmp r2, #0x1F
+bgt .unterfunktion3
+strh r2, [r1]
+pop {r0-r5, pc}
+
+.wusler1:
+.word 0x0203f414
+.wusler2:
+.word 0x020370C2
+.unterfunktion1:
+sub r2, r2, #0x80
+b main
+.unterfunktion2:
+sub r2, r2, #0x40
+b main
+.unterfunktion3:
+sub r2, r2, #0x20
+b main
+.unterfunktion4:
+ldrb r5, [r0, #0x5]
+lsr r5, #0x7
+ldrh r2, [r0, #0x6]
+lsl r2, #0x1
+add r2, r2, r5
+sub r3, r3, #0x3
+mul r3, r3, r4
+lsr r2, r3
+b main

+ 37 - 0
Pokemon Decrypting/dvs_lesen_neu.asm

@@ -0,0 +1,37 @@
+push {r0-r5, lr}
+ldr r0, .ev_data
+ldr r0, [r0]
+ldr r1, .var8005
+ldrb r2, [r1]
+
+mov r4, #0x5
+mov r3, r2
+
+cmp r3, #0x2 
+bgt .anderes_startoffset
+ldrh r2, [r0, #0x4]
+
+main:
+mul r3, r3, r4
+lsr r2, r3
+mov r4, #0x1F
+and r2, r2, r4
+strh r2, [r1]
+pop {r0-r5, pc}
+
+.anderes_startoffset:
+ldrb r5, [r0, #0x5]
+lsr r5, #0x7
+ldrh r2, [r0, #0x6]
+lsl r2, #0x1
+add r2, r2, r5
+sub r3, r3, #0x3
+b main
+
+mov r0, r0
+
+.ev_data:
+.word 0x0203f414
+.var8005:
+.word 0x020370C2
+

BIN
Pokemon Decrypting/encrypter.out


+ 20 - 0
Pokemon Decrypting/readme.txt

@@ -0,0 +1,20 @@
+Ev Daten: 0203f410
+Var 8005: 020370C2
+
+0x0 -> HP
+0x1 -> Attack
+0x2 -> Defense
+0x3 -> Speed
+0x4 -> Special Attack
+0x5 -> Special Defense
+
+Reihenfolge für Script:
+Pokemon mit "special 0x9F" auswählen
+
+Zum Abbruch:
+compare 0x8004 0x6
+if 0x4 goto ENDE
+
+callasm Offset_zum_Encrypter
+Variablen setzen und Zwischencode ausführen
+callasm Offset_zum_Decrypter

+ 2 - 0
TMs unbegrenzt/readme.txt

@@ -0,0 +1,2 @@
+Beim Offset 124EF0 den Code A9 auf 90 ändern.
+Beim Offset 124FBC den Code A9 auf 90 ändern.

BIN
Tag-Nacht-Schritte-System/.DS_Store


+ 49 - 0
Tag-Nacht-Schritte-System/Altes System/schritte_zeitsystem.asm

@@ -0,0 +1,49 @@
+mov r2, #0x7f
+and r1, r2
+strh r1, [r0, #0x0]
+
+push {r0-r2}
+ldr r0, .ram
+ldrh r1, [r0]
+add r1, r1, #0x1
+mov r2, #0x9C
+lsl r2, #0x7
+cmp r1, r2
+bgt event
+b back
+
+event:
+mov r1, #0x0
+mov r0, r0
+
+push {r0-r1}
+ldr r0, .script
+bl linkerTwo
+pop {r0-r1}
+b back
+
+linkerTwo:
+ldr r1, .scriptrunner
+bx r1	
+
+back:
+strh r1, [r0]
+pop {r0-r2}
+mov r4, r6
+mov r6, #0x0
+cmp r1, #0x0
+bne wusi
+add r4, #0x2
+mov r15, r4
+
+wusi:
+add r4, #0x16
+mov r15, r4
+
+.ram:
+.word 0x02ffff60
+.script:
+.word 0x08a00050
+.scriptrunner:
+.word 0x8069AD5
+

+ 2 - 0
Tag-Nacht-Schritte-System/Bei_Benutzung_mit_DNS.txt

@@ -0,0 +1,2 @@
+B000e8 auf 02e00302 ändern
+Damit wird nicht die Real Time Clock verwendet, sondern die custom Schritte-Clock

+ 31 - 0
Tag-Nacht-Schritte-System/readme.txt

@@ -0,0 +1,31 @@
+Zuerst bei A00000 diesen Code einfügen:
+
+7F221140 018007B4 1C488178 04313B22
+8A4201D3 817028E0 00218170 41780131
+8A4201D3 417020E0 00214170 01780131
+02B40622 914205D3 12228A42 02D30021
+017102E0 01210171 FFE702BC 17228A42
+01D30170 09E00021 017003B4 08480021
+01604160 8160C160 03BC07BC 341C0026
+002901D1 0234A746 1634A746 08E00302
+00E20302
+
+Dieser Code ist der gleiche, wie in der beiliegenden Datei.
+
+Jetzt beim Offset 6D6C0 folgenden Code
+7F221140 01800029
+mit diesem neuen ersetzen. Das Offset A00000 wird hier berechnet.
+
+45246405 7E46A746
+bzw.
+mov r4, #0x45
+lsl r4, #0x15
+mov r6, r15
+mov r15, r4
+
+Der alte Code wird vom obrigen Script imitiert.
+Die Flags 900 - 97F werden täglich reseted (Für tägliche Events).
+
+0203E00C ist 1 wenn Nacht ist.
+
+

+ 91 - 0
Tag-Nacht-Schritte-System/schritte_zeitsystem.asm

@@ -0,0 +1,91 @@
+mov r2, #0x7f
+and r1, r2
+strh r1, [r0, #0x0]
+
+push {r0-r2}
+ldr r0, .stunden
+ldrb r1, [r0, #0x2]
+add r1, r1, #0x4
+mov r2, #0x3B
+cmp r2, r1
+blo minute
+strb r1, [r0, #0x2]
+b back
+
+minute:
+mov r1, #0x0
+strb r1, [r0, #0x2]
+ldrb r1, [r0, #0x1]
+add r1, r1, #0x1
+cmp r2, r1
+blo stunden
+strb r1, [r0, #0x1]
+b back
+
+stunden:
+mov r1, #0x0
+strb r1, [r0, #0x1]
+ldrb r1, [r0]
+add r1, r1, #0x1
+
+push {r1}
+mov r2, #0x6
+cmp r1, r2
+blo nacht
+mov r2, #0x12
+cmp r2, r1
+blo nacht
+
+tag:
+mov r1, #0x0
+strb r1, [r0, #0x4]
+b weiter
+
+nacht:
+mov r1, #0x1
+strb r1, [r0, #0x4]
+b weiter
+
+weiter:
+pop {r1}	
+mov r2, #0x17
+cmp r2, r1
+blo event
+strb r1, [r0]
+b back
+
+event:
+mov r1, #0x0
+strb r1, [r0]
+
+push {r0-r1}
+ldr r0, .ram
+mov r1, #0x0
+str r1, [r0]
+str r1, [r0, #0x4]
+str r1, [r0, #0x8]
+str r1, [r0, #0xC]
+pop {r0-r1}	
+
+back:
+pop {r0-r2}
+mov r4, r6
+mov r6, #0x0
+cmp r1, #0x0
+bne wusi
+add r4, #0x2
+mov r15, r4
+
+wusi:
+add r4, #0x16
+mov r15, r4
+
+.stunden:
+.word 0x0203e008
+.ram:
+.word 0x0203e200
+
+
+
+
+

BIN
Tag-Nacht-Schritte-System/schritte_zeitsystem.bin


+ 7 - 0
Tag-Nacht-Schritte-System/zeiten_DNS.txt

@@ -0,0 +1,7 @@
+0300553C Jahr
+0300553E 00
+0300553F Monat
+03005540 Tag
+03005542 Stunden
+03005543 Minuten
+03005544 Sekunden

+ 39 - 0
gehaltene_items.txt

@@ -0,0 +1,39 @@
+Rattikarl; Sinelbeere, Tsitrubeere
+Ibitak; Hackattack
+Arbok; Giftstich
+Pikachu; Sinelbeere, Kugelblitz
+Sandamer; Pudersand
+Piepi; Mondstein
+Vulpix; Fragiabeere
+Pummeluff; Sinelbeere
+Paras; Minipilz, Riesenpilz
+Parasek; Minipilz, Riesenpilz
+Omot; Silberstaub
+Mauzi; Nugget
+Fukano; Fragiabeere
+Abra; Krummlöffel
+Kadabra; Krummlöffel
+Maschock; Fokus-Band
+Georok; Granitstein
+Magneton; Magnet
+Jurob; Wilbirbeere
+Jugong; Wilbirbeere, Ewiges Eis
+Muschas; Perle, Riesenperle
+Apollo; Bannsticker
+Onix; Granitstein
+Tragosso; Kampfknochen
+Knogga; Kampfknochen
+Smogon; Rauchball
+Chaneira; Glücks-Ei
+Seeper; Drachenhaut
+Sterndu; Sternenstaub, Sternenstück
+Ditto; Metallstaub
+Relaxo; Maronbeere
+Dragonir; Drachenzahn
+
+Wiesor; Sinelbeere
+Traunfugil; Bannsticker
+Girafarig; Persimbeere
+Quiekel; Wilbirbeere
+Panzaeron; Hackattack
+Ho-Oh; Zauberasche

+ 68 - 0
offsets.txt

@@ -0,0 +1,68 @@
+Deutsch 
+
+Attacken Daten  
+250B28          
+251BD3
+
+Pokemon
+245DB0
+246F6F
+
+Attacken Namen
+246F70
+24816A
+
+Attacken Beschreibung
+481AC8
+486BEB
+Attacken Beschreibung Pointer
+486BEC
+487173
+
+Fähigkeiten Namen
+24FB6C
+24FF58
+
+Fähigkeiten Beschreibung
+24F2AD
+24FA29
+Fähigkeiten Pointer
+24FA2C
+24FB63
+
+Englisch 
+Attacken Daten
+250C04
+251CAF
+
+Pokemon
+245EE0
+24709F
+
+Attacken Namen
+2470A0
+24829A
+
+Attacken Beschreibung
+482834
+4886E5
+Attacken Beschreibung Pointer
+4886E8
+488C6F
+
+Fähigkeiten Namen
+24FC48
+250034
+
+Fähigkeiten Beschreibung
+24F3D8
+24FB06
+2.Teil
+487960
+4879B6
+Fähigkeiten Pointer
+24FB08
+24FC3F
+
+
+