Hacking Legend of Heroes Translation

Status
Not open for further replies.

flame1234

Well-Known Member
Member
Joined
May 17, 2009
Messages
734
Trophies
0
XP
957
Country
United States
OK, I got the magic inserter kinda sorta working. Link to pics. More pics. It doesn't appear that the inserter is messing up - it appears that move names or descriptions are too long.

Code link

1. Get the tool here (pastebin).
2. Prepare your input files:
2a. Rename your t_magic._dt as t_magic.orig.
2b. Go here (Google sheets) and copy into your spreadsheet program.
2c. Delete the first line (header) and the Japanese column.
2d. Save the file in CSV format as magic.data. Use SHIFT-JIS encoding and the tab delimiter. Save the file in the same directory as the original source data from (2a).
3. Run the program using python. I named mine ZnKmagicinsert.py but you can name it whatever you like (no arguments).
3a. Description of program operation: creates the t_magic._dt file, using both the original source data and the translations file, that's suitable for insertion into the game.
4. Open \data\cclm\system\sysstart.bcc using your hex editor. Zero out the rows corresponding to the file you're looking to insert and then save the file. You only need to do this once.
5a. When the program runs, it tells you the size of the output (in hex).
5b. Open \USRDIR\data.lst with your hex editor. Find the value 0xF64A (original size of t_magic._dt, 0x4AF6 or 19190 bytes, but with the bytes reversed per little-endian format).
5c. Replace that value with the new size in hex. Remember to reverse the bytes.
5d. Save the file.
6. Insert the files using UMDgen and save your image. Enjoy!

Imgur isn't working now, so I've uploaded the images here.
 

Attachments

  • NPJH50311_00008.jpg
    NPJH50311_00008.jpg
    122.9 KB · Views: 934
  • NPJH50311_00007.jpg
    NPJH50311_00007.jpg
    118.8 KB · Views: 272
  • NPJH50311_00005.jpg
    NPJH50311_00005.jpg
    117.5 KB · Views: 296
  • NPJH50311_00004.jpg
    NPJH50311_00004.jpg
    125.8 KB · Views: 1,002
  • NPJH50311_00003.jpg
    NPJH50311_00003.jpg
    124.9 KB · Views: 278

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
Yeah. Heavy edits and gonna have to work on some custom tiles in the font. That is what I am looking into how to do as I type this. Gonna be a new experience editing this kind of font.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
So for about a week or two now, I have been searching for something in the game. The file to edit the Crossbell City map. Well out of sheer dumb luck and the discovery of misc hidden text in other folders... I finally found it. Apparently those names at the end of the dialog files are what controls the names on that map. By that logic, I don't think it is out of the question for inanimate objects to be named there too. Been taking a crap-ton of screenshots while walking around the town. Hoping to come across that SE.... whatever one. I am betting it really is either control or command or something along those lines.
 

xrainex

Member
Newcomer
Joined
Jul 6, 2014
Messages
11
Trophies
0
Age
38
XP
56
Country
Canada
oh wow those ability descriptions will need some serious editing...and it doesn't look like there's much room unless you cut down drastically on the descriptions...

oh and zero, I'm going to take a wild guess here at that SE thing.... because it has "control"... maybe it refers to the elevators in the geofront area... there are a couple of elevators there...maybe check there?
 

Guren no heya kara

Well-Known Member
Newcomer
Joined
Jul 8, 2014
Messages
53
Trophies
0
XP
127
Country
Italy
Yep, I guess we'll have to do without those elaborated descriptions
and find something more direct and standardised. A real pity.
Unless we can find a way for reducing the font by half and cram double the characters in there.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
About the font. How pissed would people be if say.... I was to make another one? It is definitely an idea but not one I am gonna tackle at this moment. Still haven't ironed out the details of what color is what in the editor.

---raine
Will definitely look into that. Just got past the part where Lloyd meets the kitty on the roof, does some talking to his partners and is sent out into the city to, I guess, do some exploring.


Edited part:
Do the PSP emus use an internal font or the one in the game? I am having a hard time telling if the changes I have made trying to find a source for a new "space" option to remedy the line break problem with some of the menus when using the standard 0x20 instead of 0x8140.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
Hate to double post. But would hate to start another topic even more. So here it goes. Trying to find some information about eboots. Below is a post of the eboot header information from jpcsp. Been trying to make sure nothing is missed and get around some stuff that I haven't figured out where the pointers originate from. The stuff is broken into what I call a simple table, then ones that are absolutely not so easy (but I am sure they are a table because editing them, triggers the exact point to break the game where intended to test for change. Like moving the pointer over to see if second letter in word will be the first type thing but it crashes the game.) Keep in mind, I do not do MIPS or very much programming in general. I can understand a few things but examples work better than just words (unless those words are in layman terms.) If somebody could explain what some of these things do, I would be eternally grateful.


-----ELF HEADER---------
e_magic 464C457F
e_class 01
e_data 01
e_idver 01
e_type FFA0
e_machine 0008
e_version 00000001
e_entry 00000108
e_phoff 00000034
e_shoff 003318D0
e_flags 10A23001
e_ehsize 0034
e_phentsize 0020
e_phnum 0003
e_shentsize 0028
e_shnum 004E
e_shstrndx 004C
-----PROGRAM HEADER #0-----
p_type 00000001
p_offset 000000C0 <-------- This is current pointer offset (you add it to the pointer in the table to reach address) to some stuff. Wonder if it has some meaning. There is are more below. Are they similar?
p_vaddr 00000000
p_paddr 0023760C
p_filesz 002785C8
p_memsz 002785C8
p_flags 00000007
p_align 00000040
-----PROGRAM HEADER #1-----
p_type 00000001
p_offset 002786C0
p_vaddr 00278600
p_paddr 00000000
p_filesz 00001DF8
p_memsz 00026144
p_flags 00000006
p_align 00000040
-----PROGRAM HEADER #2-----
p_type 700000A0
p_offset 0027A4C0
p_vaddr 00000000
p_paddr 00000000
p_filesz 000B6FA8
p_memsz 00000000
p_flags 00000000
p_align 00000010
-----SECTION HEADER #0-----
sh_name 00000000
sh_type 00000000
sh_flags 00
sh_addr 00000000
sh_offset 00000000
sh_size 00000000
sh_link 00
sh_info 00
sh_addralign 00
sh_entsize 00000000
-----SECTION HEADER #1-----
.init
sh_name 00000001
sh_namez '.init'
sh_type 00000001
sh_flags 06
sh_addr 00000000
sh_offset 000000C0
sh_size 00000024
sh_link 00
sh_info 00
sh_addralign 01
sh_entsize 00000000
-----SECTION HEADER #2-----
.rel.init
sh_name 00000007
sh_namez '.rel.init'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0027A4C0
sh_size 00000010
sh_link 00
sh_info 01
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #3-----
.text
sh_name 00000011
sh_namez '.text'
sh_type 00000001
sh_flags 06
sh_addr 00000024
sh_offset 000000E4
sh_size 00236CA8
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #4-----
.rel.text
sh_name 00000017
sh_namez '.rel.text'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0027A4D0
sh_size 0009C228
sh_link 00
sh_info 03
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #5-----
.fini
sh_name 00000021
sh_namez '.fini'
sh_type 00000001
sh_flags 06
sh_addr 00236CCC
sh_offset 00236D8C
sh_size 0000001C
sh_link 00
sh_info 00
sh_addralign 01
sh_entsize 00000000
-----SECTION HEADER #6-----
.rel.fini
sh_name 00000027
sh_namez '.rel.fini'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 003166F8
sh_size 00000008
sh_link 00
sh_info 05
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #7-----
.sceStub.text
sh_name 00000031
sh_namez '.sceStub.text'
sh_type 00000001
sh_flags 06
sh_addr 00236CE8
sh_offset 00236DA8
sh_size 00000670
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #8-----
.lib.ent.top
sh_name 0000003F
sh_namez '.lib.ent.top'
sh_type 00000001
sh_flags 02
sh_addr 00237360
sh_offset 00237420
sh_size 00000004
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #9-----
.lib.ent
sh_name 0000004C
sh_namez '.lib.ent'
sh_type 00000001
sh_flags 02
sh_addr 00237364
sh_offset 00237424
sh_size 00000010
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #10-----
.rel.lib.ent
sh_name 00000055
sh_namez '.rel.lib.ent'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00316700
sh_size 00000008
sh_link 00
sh_info 09
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #11-----
.lib.ent.btm
sh_name 00000062
sh_namez '.lib.ent.btm'
sh_type 00000001
sh_flags 02
sh_addr 00237374
sh_offset 00237434
sh_size 00000004
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #12-----
.lib.stub.top
sh_name 0000006F
sh_namez '.lib.stub.top'
sh_type 00000001
sh_flags 02
sh_addr 00237378
sh_offset 00237438
sh_size 00000004
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #13-----
.lib.stub
sh_name 0000007D
sh_namez '.lib.stub'
sh_type 00000001
sh_flags 02
sh_addr 0023737C
sh_offset 0023743C
sh_size 000001CC
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #14-----
.rel.lib.stub
sh_name 00000087
sh_namez '.rel.lib.stub'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00316708
sh_size 00000228
sh_link 00
sh_info 0D
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #15-----
.lib.stub.btm
sh_name 00000095
sh_namez '.lib.stub.btm'
sh_type 00000001
sh_flags 02
sh_addr 00237548
sh_offset 00237608
sh_size 00000004
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #16-----
.rodata.sceModuleInfo
sh_name 000000A3
sh_namez '.rodata.sceModuleInfo'
sh_type 00000001
sh_flags 02
sh_addr 0023754C
sh_offset 0023760C
sh_size 00000034
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #17-----
.rel.rodata.sceModuleInfo
sh_name 000000B9
sh_namez '.rel.rodata.sceModuleInfo'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00316930
sh_size 00000028
sh_link 00
sh_info 10
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #18-----
.rodata.sceResident
sh_name 000000D3
sh_namez '.rodata.sceResident'
sh_type 00000001
sh_flags 02
sh_addr 00237580
sh_offset 00237640
sh_size 000001D4
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #19-----
.rel.rodata.sceResident
sh_name 000000E7
sh_namez '.rel.rodata.sceResident'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00316958
sh_size 00000030
sh_link 00
sh_info 12
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #20-----
.rodata.sceNid
sh_name 000000FF
sh_namez '.rodata.sceNid'
sh_type 00000001
sh_flags 02
sh_addr 00237754
sh_offset 00237814
sh_size 00000338
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #21-----
.ctors
sh_name 0000010E
sh_namez '.ctors'
sh_type 00000001
sh_flags 03
sh_addr 00237A8C
sh_offset 00237B4C
sh_size 00000024
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #22-----
.rel.ctors
sh_name 00000115
sh_namez '.rel.ctors'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00316988
sh_size 00000038
sh_link 00
sh_info 15
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #23-----
.dtors
sh_name 00000120
sh_namez '.dtors'
sh_type 00000001
sh_flags 03
sh_addr 00237AB0
sh_offset 00237B70
sh_size 00000018
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #24-----
.rel.dtors
sh_name 00000127
sh_namez '.rel.dtors'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 003169C0
sh_size 00000020
sh_link 00
sh_info 17
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #25-----
.jcr
sh_name 00000132
sh_namez '.jcr'
sh_type 00000001
sh_flags 03
sh_addr 00237AC8
sh_offset 00237B88
sh_size 00000004
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #26-----
.eh_frame
sh_name 00000137
sh_namez '.eh_frame'
sh_type 00000001
sh_flags 02
sh_addr 00237ACC
sh_offset 00237B8C
sh_size 000205D0
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #27-----
.rel.eh_frame
sh_name 00000141
sh_namez '.rel.eh_frame'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 003169E0
sh_size 000070A8
sh_link 00
sh_info 1A
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #28-----
.gcc_except_table
sh_name 0000014F
sh_namez '.gcc_except_table'
sh_type 00000001
sh_flags 02
sh_addr 0025809C
sh_offset 0025815C
sh_size 00001FDC
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #29-----
.rel.gcc_except_table
sh_name 00000161
sh_namez '.rel.gcc_except_table'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0031DA88
sh_size 00000008
sh_link 00
sh_info 1C
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #30-----
.rodata
sh_name 00000177
sh_namez '.rodata'
sh_type 00000001
sh_flags 32
sh_addr 0025A080
sh_offset 0025A140
sh_size 0001926C
sh_link 00
sh_info 00
sh_addralign 40
sh_entsize 00000000
-----SECTION HEADER #31-----
.rel.rodata
sh_name 0000017F
sh_namez '.rel.rodata'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0031DA90
sh_size 00009F98
sh_link 00
sh_info 1E
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #32-----
.rodata.0001
sh_name 0000018B
sh_namez '.rodata.0001'
sh_type 00000001
sh_flags 32
sh_addr 002732F0
sh_offset 002733B0
sh_size 0000000C
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #33-----
.rodata.0002
sh_name 00000198
sh_namez '.rodata.0002'
sh_type 00000001
sh_flags 32
sh_addr 00273300
sh_offset 002733C0
sh_size 00000D44
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #34-----
.rodata.0003
sh_name 000001A5
sh_namez '.rodata.0003'
sh_type 00000001
sh_flags 32
sh_addr 00274048
sh_offset 00274108
sh_size 000001A4
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #35-----
.rodata.0004
sh_name 000001B2
sh_namez '.rodata.0004'
sh_type 00000001
sh_flags 32
sh_addr 002741F0
sh_offset 002742B0
sh_size 000000DC
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #36-----
.rodata.0005
sh_name 000001BF
sh_namez '.rodata.0005'
sh_type 00000001
sh_flags 32
sh_addr 002742D0
sh_offset 00274390
sh_size 000001A4
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #37-----
.rodata.0006
sh_name 000001CC
sh_namez '.rodata.0006'
sh_type 00000001
sh_flags 32
sh_addr 00274478
sh_offset 00274538
sh_size 000005A4
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #38-----
.rodata.0007
sh_name 000001D9
sh_namez '.rodata.0007'
sh_type 00000001
sh_flags 32
sh_addr 00274A20
sh_offset 00274AE0
sh_size 000006F4
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #39-----
.rodata.0008
sh_name 000001E6
sh_namez '.rodata.0008'
sh_type 00000001
sh_flags 32
sh_addr 00275118
sh_offset 002751D8
sh_size 00000174
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #40-----
.rodata.0009
sh_name 000001F3
sh_namez '.rodata.0009'
sh_type 00000001
sh_flags 32
sh_addr 00275290
sh_offset 00275350
sh_size 00000F6C
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #41-----
.rodata.0010
sh_name 00000200
sh_namez '.rodata.0010'
sh_type 00000001
sh_flags 32
sh_addr 00276200
sh_offset 002762C0
sh_size 00000A44
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #42-----
.rodata.0011
sh_name 0000020D
sh_namez '.rodata.0011'
sh_type 00000001
sh_flags 32
sh_addr 00276C48
sh_offset 00276D08
sh_size 0000032C
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #43-----
.rodata.0012
sh_name 0000021A
sh_namez '.rodata.0012'
sh_type 00000001
sh_flags 32
sh_addr 00276F78
sh_offset 00277038
sh_size 000000DC
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #44-----
.rodata.0013
sh_name 00000227
sh_namez '.rodata.0013'
sh_type 00000001
sh_flags 32
sh_addr 00277058
sh_offset 00277118
sh_size 00000B44
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #45-----
.rodata.0014
sh_name 00000234
sh_namez '.rodata.0014'
sh_type 00000001
sh_flags 32
sh_addr 00277BA0
sh_offset 00277C60
sh_size 000001DC
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #46-----
.rodata.0015
sh_name 00000241
sh_namez '.rodata.0015'
sh_type 00000001
sh_flags 32
sh_addr 00277D80
sh_offset 00277E40
sh_size 000005B4
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #47-----
.rodata.0016
sh_name 0000024E
sh_namez '.rodata.0016'
sh_type 00000001
sh_flags 32
sh_addr 00278338
sh_offset 002783F8
sh_size 00000044
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #48-----
.rodata.0017
sh_name 0000025B
sh_namez '.rodata.0017'
sh_type 00000001
sh_flags 32
sh_addr 00278380
sh_offset 00278440
sh_size 000000FC
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #49-----
.rodata.0018
sh_name 00000268
sh_namez '.rodata.0018'
sh_type 00000001
sh_flags 32
sh_addr 00278480
sh_offset 00278540
sh_size 00000148
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #50-----
.rel.rodata.0002
sh_name 00000275
sh_namez '.rel.rodata.0002'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00327A28
sh_size 000010A8
sh_link 00
sh_info 21
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #51-----
.rel.rodata.0003
sh_name 00000286
sh_namez '.rel.rodata.0003'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00328AD0
sh_size 00000308
sh_link 00
sh_info 22
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #52-----
.rel.rodata.0004
sh_name 00000297
sh_namez '.rel.rodata.0004'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00328DD8
sh_size 00000188
sh_link 00
sh_info 23
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #53-----
.rel.rodata.0005
sh_name 000002A8
sh_namez '.rel.rodata.0005'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00328F60
sh_size 00000230
sh_link 00
sh_info 24
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #54-----
.rel.rodata.0006
sh_name 000002B9
sh_namez '.rel.rodata.0006'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00329190
sh_size 00000960
sh_link 00
sh_info 25
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #55-----
.rel.rodata.0007
sh_name 000002CA
sh_namez '.rel.rodata.0007'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00329AF0
sh_size 00000B00
sh_link 00
sh_info 26
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #56-----
.rel.rodata.0008
sh_name 000002DB
sh_namez '.rel.rodata.0008'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032A5F0
sh_size 00000200
sh_link 00
sh_info 27
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #57-----
.rel.rodata.0009
sh_name 000002EC
sh_namez '.rel.rodata.0009'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032A7F0
sh_size 000018F8
sh_link 00
sh_info 28
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #58-----
.rel.rodata.0010
sh_name 000002FD
sh_namez '.rel.rodata.0010'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032C0E8
sh_size 000012A8
sh_link 00
sh_info 29
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #59-----
.rel.rodata.0011
sh_name 0000030E
sh_namez '.rel.rodata.0011'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032D390
sh_size 000005E8
sh_link 00
sh_info 2A
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #60-----
.rel.rodata.0012
sh_name 0000031F
sh_namez '.rel.rodata.0012'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032D978
sh_size 00000188
sh_link 00
sh_info 2B
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #61-----
.rel.rodata.0013
sh_name 00000330
sh_namez '.rel.rodata.0013'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032DB00
sh_size 000013A8
sh_link 00
sh_info 2C
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #62-----
.rel.rodata.0014
sh_name 00000341
sh_namez '.rel.rodata.0014'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032EEA8
sh_size 00000328
sh_link 00
sh_info 2D
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #63-----
.rel.rodata.0015
sh_name 00000352
sh_namez '.rel.rodata.0015'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032F1D0
sh_size 00000950
sh_link 00
sh_info 2E
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #64-----
.rel.rodata.0016
sh_name 00000363
sh_namez '.rel.rodata.0016'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032FB20
sh_size 00000038
sh_link 00
sh_info 2F
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #65-----
.rel.rodata.0017
sh_name 00000374
sh_namez '.rel.rodata.0017'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032FB58
sh_size 000000A8
sh_link 00
sh_info 30
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #66-----
.rel.rodata.0018
sh_name 00000385
sh_namez '.rel.rodata.0018'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032FC00
sh_size 000001D0
sh_link 00
sh_info 31
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #67-----
.data
sh_name 00000396
sh_namez '.data'
sh_type 00000001
sh_flags 03
sh_addr 00278600
sh_offset 002786C0
sh_size 00001650
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #68-----
.rel.data
sh_name 0000039C
sh_namez '.rel.data'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 0032FDD0
sh_size 00000E68
sh_link 00
sh_info 43
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #69-----
.data.0001
sh_name 000003A6
sh_namez '.data.0001'
sh_type 00000001
sh_flags 03
sh_addr 00279C50
sh_offset 00279D10
sh_size 000007A8
sh_link 00
sh_info 00
sh_addralign 08
sh_entsize 00000000
-----SECTION HEADER #70-----
.rel.data.0001
sh_name 000003B1
sh_namez '.rel.data.0001'
sh_type 700000A0
sh_flags 00
sh_addr 00000000
sh_offset 00330C38
sh_size 00000830
sh_link 00
sh_info 45
sh_addralign 04
sh_entsize 00000008
-----SECTION HEADER #71-----
.sbss
sh_name 000003C0
sh_namez '.sbss'
sh_type 00000008
sh_flags 03
sh_addr 0027A400
sh_offset 0027A4B8
sh_size 00000000
sh_link 00
sh_info 00
sh_addralign 04
sh_entsize 00000000
-----SECTION HEADER #72-----
.bss
sh_name 000003C6
sh_namez '.bss'
sh_type 00000008
sh_flags 03
sh_addr 0027A400
sh_offset 0027A4B8
sh_size 0001F378
sh_link 00
sh_info 00
sh_addralign 10
sh_entsize 00000000
-----SECTION HEADER #73-----
.bss.0001
sh_name 000003CB
sh_namez '.bss.0001'
sh_type 00000008
sh_flags 03
sh_addr 00299780
sh_offset 0027A4B8
sh_size 00004160
sh_link 00
sh_info 00
sh_addralign 10
sh_entsize 00000000
-----SECTION HEADER #74-----
.bss.0002
sh_name 000003D5
sh_namez '.bss.0002'
sh_type 00000008
sh_flags 03
sh_addr 0029D900
sh_offset 0027A4B8
sh_size 00000E44
sh_link 00
sh_info 00
sh_addralign 40
sh_entsize 00000000
-----SECTION HEADER #75-----
.comment
sh_name 000003DF
sh_namez '.comment'
sh_type 00000001
sh_flags 00
sh_addr 00000000
sh_offset 00331468
sh_size 0000005F
sh_link 00
sh_info 00
sh_addralign 01
sh_entsize 00000000
-----SECTION HEADER #76-----
.shstrtab
sh_name 000003E8
sh_namez '.shstrtab'
sh_type 00000003
sh_flags 00
sh_addr 00000000
sh_offset 003314C7
sh_size 00000407
sh_link 00
sh_info 00
sh_addralign 01
sh_entsize 00000000
-----SECTION HEADER #77-----
.gcc_compiled_long32
sh_name 000003F2
sh_namez '.gcc_compiled_long32'
sh_type 00000001
sh_flags 00
sh_addr 00000000
sh_offset 00332500
sh_size 00000000
sh_link 00
sh_info 00
sh_addralign 01
sh_entsize 00000000


If you open the decrypted eboot. Look at these addresses to see what I am wondering mostly about.
Table starts at 0x025A560
Dialog stuff goes like:
0x264104 CHARACTER...
0x264130 VISUAL....
0x264158 MOVIE...
0x26417C EVENT....

The reason I believe this is the pointer table for this section is 1) after editing it, it screws the game up 2) after counting out the number of pointers, it matches up to the number of dialog pieces 3) it is surrounded by the table for the dialog before and after it.
 

flame1234

Well-Known Member
Member
Joined
May 17, 2009
Messages
734
Trophies
0
XP
957
Country
United States
I will work on the NPC names inserter tool next. I think this will be a good one. There are 316 script files. It takes too long to manually update the data.lst after it runs (tells the program how much data is in each file), so the tool will need to do this task also.

The NPC names are at the end of the script files. This is an easier problem, because the last thing in the script files that is pointed to (anywhere within the script file) is the filename near the end. This is then followed by all the NPC names. So even if we change the length of the NPC names, no one cares, because all of the jump targets in the script files are sequentially before the NPC names. Therefore, the change in length won't affect the jump targets within the script files.
For changing the rest of the dialogue, we have to know where the jumps are, so we can update the targets they point to as needed.
------------------
Here are the pictures:
http://imgur.com/a/l0h6r
------------------
Tool 1: MC1 overwriter
In the \data\cclm\map4 folder, deletes all *.bin lines from all *.mc1 files (300+ of them).
Because you don't want to have to do that manually.
1. Put your MC1 files in a folder and rename them *.mc1.orig
2. Run program
3. Insert with UMDgen and you're good!
3a. OK, this step is a little hard because UMDgen's interface is not great. I extracted the entire contents of the cclm folder, updated the *.mc1 files, and then put everything back.
-------------------
Tool 2: NPC name inserter
1. Rename your *.bin files (scripts) as *.orig.
2. Put data.lst in that folder and name it data.orig.
3. Prepare your input:
3a. Go here and copy into your spreadsheet program. Delete the header and all columns except the one with the English translation.
3b. Save in CSV format as npcs.data.
4. Run program (no arguments).
5. Insert *.bin files (not 00sys or temp) using UMDgen and enjoy.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
Just gonna say I won't be posting as much new info here as before. I will still swing by for updating but gonna to not spam the board with project discussions. Feel free to swing by either the new website (still under construction) or forum (going in full force but you have to register). Links are in the signature.
 
  • Like
Reactions: GHANMI and JamRules

GHANMI

Well-Known Member
Member
Joined
Jun 10, 2012
Messages
969
Trophies
0
XP
914
Country
Project discussions aren't spam ;)
It's a heaven of romhacking information, and a treat to read.
By all means, feel free to post anything here. I'll be sure to check the new forum too :P
(Isn't it too early for a website? You could simply have a blog up)
 

flame1234

Well-Known Member
Member
Joined
May 17, 2009
Messages
734
Trophies
0
XP
957
Country
United States
How do admins here feel about spamming? Like for example #209 above (by me).
1. I am going to make a tool.
2. Edited the post to say that I made the tool, info, etc... <- Since there was no activity between those times. Should I have made a new post?
That's considered spam if I double post, correct?
 

GHANMI

Well-Known Member
Member
Joined
Jun 10, 2012
Messages
969
Trophies
0
XP
914
Country
How do admins here feel about spamming? Like for example #209 above (by me).
1. I am going to make a tool.
2. Edited the post to say that I made the tool, info, etc... <- Since there was no activity between those times. Should I have made a new post?
That's considered spam if I double post, correct?

Double posting is what's not allowed, I think... but editing your existing post is. Don't know whether mods tolerate double posts if you go over the technically possible post letter limit though (it's very big, so no worries)
And I don't see how a post with useful, relevant to the discussion info, can be considered spam, unless it's bizarro dimension.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
Project discussions aren't spam ;)
It's a heaven of romhacking information, and a treat to read.
By all means, feel free to post anything here. I'll be sure to check the new forum too :P
(Isn't it too early for a website? You could simply have a blog up)

I had actually tried setting up a blog and it really didn't suit my needs. With a website I can put up stuff like tools and info about other stuff. I have plans for making pages about using certain tools and games that are easily hackable for people who are interested in doing something, if nothing else but screwing around with text. The forum thing though is basically for having some hidden discussion about stuff. I can say that anything that is important, information wise, will be posted here and on the website. Flame and me are finding some really good information about Falcom games but we haven't sorted out all the details. So unless you have been privy to our pms, it probably wouldn't make a whole lot of sense.

It's also nice to take a break from talking Zero no Kiseki and just share other interests.
 
  • Like
Reactions: GHANMI

Guren no heya kara

Well-Known Member
Newcomer
Joined
Jul 8, 2014
Messages
53
Trophies
0
XP
127
Country
Italy
Never.
Probably I did something wrong (it was pretty late...so maybe I typed the email address wrong...lol).
I'll re-register now.

Edit: yep, something did go wrong the first time. Now I'm in.
 

zero_g_monkey

Well-Known Member
OP
Member
Joined
Aug 9, 2013
Messages
332
Trophies
0
Age
44
XP
321
Country
United States
Cool. It took me a few tries to get it going. Got you set to use the project threads. If you can't see it, just let me know.
 

flame1234

Well-Known Member
Member
Joined
May 17, 2009
Messages
734
Trophies
0
XP
957
Country
United States
Need some programming help.

First: Is there some programming vocab I need to know re: keeping straight the pointer address (where is the pointer) and the address the pointer is pointing to (target address)?

In python:
I have two lists (same length) and I need to iterate them simultaneously.
One list has name replacement data
The other list has pointer addresses, either zero (no pointer) or the address of where the pointer is.
So I was wondering if I can or should use the python zip function to do this.

So it goes:

pos = Get the first name position
for zip(names,pointeraddresses):
->update the pointer(pointeraddress,pos)
->update the output string(name)
->update the current file position(pos,len(name))

And that will do the job. Is this how you're supposed to use zip?

Never mind, looks like that's the answer exactly:
http://stackoverflow.com/questions/21098350/python-iterate-over-two-lists-simultaneously
 
Status
Not open for further replies.

Site & Scene News

Popular threads in this forum

General chit-chat
Help Users
    Xdqwerty @ Xdqwerty: aeiou