11 March 2016 - Forum Rules
Started by DackR, January 09, 2016, 05:37:52 PM
Quote from: BlackDog61 on January 09, 2016, 06:57:18 PMThis is kind of a tough space to discuss, and yet one where it would be so great to find something common. And so tough. I'd like a text-supporting tool for dumping & inserting to handle quite a few things...- a mix of hex data and text data. We generally talk about pointers tables, but it so happens my favourite example game also has headers that need updating (because sizes of sections containing text are changed, offsets to subsequent sections in the main header need to be updated.) On top of the pointers table, and the text encoded according to a table.- some pure hex data, when I'm changing screen layouts and whatnuts.- some pure hex data taken from the results of an assembly generating toolchain. Actually, for the PSP, I'm using armips and it is not obvious which toolchain should be called first. (Currently I have 1 specific tool of my making to generate a game-specific table (dependent on files sizes), and I run a 2-pass process: assemble, then generate the table, then assemble again.- support custom encryptions / compressions because that's what these games do - they specialize a lot of things. (need a plugin or executable call interface)- Cartographer + Atlas propose part this with quite some flexibility. (But it would have worked in my example of interest. I tried.)- I don't see myself using the quickbms scripts to do anything beyond pure structure parsing. (I'm not even using it for that.)- I haven't seen any updates on TextAngel for a while (but I may be missing stuff)If versions are taken care of in that nice toolchain, that's great. (And I mean using a versioning system like git - since it's the hype system of the moment.)Those would be my overall 3 cents.
Quote from: BlackDog61 on January 10, 2016, 03:26:29 PMI <b>think</b> I'm starting to understand what this tool does. Could you check if the following is correct?As input to this tool, the user provides:- the original rom- binary files containing some modificationsAs output, the program creates a new ROM file.All operations you can specify (today) are binary insert, replace, remove operations, with the option of executing a compression on a binary file before its use for insertion/replacement.Correct?
Quote from: RyanfaeScotland on January 10, 2016, 06:24:00 PMI'm in the need of something like this with my current process being exactly what you described, making modifications via HxD directly on the ROM file.I'm doing a bit of a toolchain review just now so can slot this in quite nicely and report back how it goes if you are interested?Only issue I can foresee is I need it for the Megadrive (68K) but it's meant to be generic right, so could be interesting to see how I get on.
Quote from: DackR on January 10, 2016, 07:47:26 PMHere's a current build. Give it a try and let me know how it works out for you. I've made some major changes to the code over the last 3 days, so it's probably a little buggy...
Quote from: RyanfaeScotland on January 10, 2016, 07:54:21 PMAlways reassuring to hear.
Quote from: RyanfaeScotland on January 10, 2016, 07:54:21 PMThat's it download and it runs without any files displaying the 'Press any key to exit' message which is a start. Will get a project set up for it during the week and give it a whirl on something simple.
Quote from: RyanfaeScotland on January 10, 2016, 07:54:21 PMHad a quick look on the project on GitHub, is it just the binaries and not the actual source that is up there?
Quote from: RyanfaeScotland on January 11, 2016, 09:20:23 AMNo rush to get the source up, was just making sure I wasn't over looking it.If I run into any problems and we can't solve them then I'll download the source (what's it written in btw?) and see if it helps but to start lets just go for it like a normal use case.
Quote from: ObiKKa on January 13, 2016, 03:50:51 PMRyanfaeScotland, your toolchain for the Genesis seems interesting, but according to your posts the 3 tools in them may require major programming knowledge, right? Are they only for the skilled programmers? Also could they be used or tweaked to work with the Sega CD games?
Quote from: RyanfaeScotland on January 14, 2016, 07:58:20 AMNothing in my toolchain requires programming knowledge to use but the output the create requires and understanding of 68K assembly. If you want to modify them then yes you'll need to know how to program.
Quote from: RyanfaeScotland on January 10, 2016, 06:24:00 PMOnly issue I can foresee is I need it for the Megadrive (68K) but it's meant to be generic right, so could be interesting to see how I get on.
org 0 incbin "original_rom.bin" org $12345 include "first_thing.asm" include "second_thing.asm" include "first_thing_f.asm" include "second_thing_f.asm"
org $12323 ; where you need to fix pointer dc.l new_pointer org $32ABC ; where you need insert (by overwriting) jump jmp new_code org $9923 ; where you need to insert (by overwriting) call of subroutine jsr new_subroutine nop ; overwrite broken opcode affected by overwriting.
asm68k /p /o ae- main.asm,new_rom.binfixheadr.exe new_rom.binmove new_rom.bin "name_of_target_file.bin" >nulpause
Quote from: r57shell on January 14, 2016, 07:41:43 PMFor Sega Genesis hacking purposes I'm using asm68k. It's "just" assembler.From meaning of word "assembler" - it assembles things up.So, you would ask how do I make "toolchain" from just assembler? Easy!...In this files you define data via "incbin" keyword, or dc.b/dc.w/dc.l as normal data. Or you write code there, you can do it freely because it's assembler. Also, you can include other *.asm file, so use it as modules.Important note: after all files that is assumed to be in continuous block (one after another), there are *_f.asm files, that in my usage has such suffix because they mean "fixes". They looks like following:Code Select Expand org $12323 ; where you need to fix pointer dc.l new_pointer org $32ABC ; where you need insert (by overwriting) jump jmp new_code org $9923 ; where you need to insert (by overwriting) call of subroutine jsr new_subroutine nop ; overwrite broken opcode affected by overwriting.In the end whole hack consists of bunch of .asm files (one of our hack has ~2000 files, 200 directories)and one "build.bat" file that consists of something like this:Code Select Expandasm68k /p /o ae- main.asm,new_rom.binfixheadr.exe new_rom.binmove new_rom.bin "name_of_target_file.bin" >nulpauseOne note: we using asm68k that is runnable in Win7. There are several versions in internet, we using that one which runs OK on Win7.That was "how it can be"....
Quote from: DackR on January 09, 2016, 05:37:52 PMHey guys-- Ever since I started work on the Marvelous translation early last year, I've also been working on a tool that would help keep me organized. I call it MBuild (or Marvelous Build). ... - A Marvelous Translation and Hacking ToolABOUT MBuild:MBuild was originally created to assist in change management whileworking on the translation of Marvelous: Another Treasure Island.There are many features, with more features being added all the time.Gone are the days of making permanant changes in a hex editor to theoriginal ROM file. With MBuild, the user is encouraged to extract data fromthe original ROM and store it separately, in an organized way. When the timecomes to build the data, an XML file containing a list of data files, offsets,and other information is used to neatly fold in the changes to the output file. ...XML Structure example:<build original="ROMFILENAME.SFC" name="NameUsedToGenerateOutput" path="..\"> <lzr file="x121964_LZR_TITLE.bin" offset="121964" /> <lzr file="x1DA5ED_LZR_SUBTITLE.bin" offset="1DA5ED" /> <lzr file="x1D948F_LZR_NINTENDO.bin" offset="1D948F" /> <lzr file="x123951_LZR_INTROFONT.bin" offset="123951" /> <lzr file="x1257F6_LZR_INTROTEXT.bin" offset="1257F6" /> <lzr file="x14B628_LZR_PUZZLE1.bin" offset="14B628" /> <lzr file="x132FC4_LZR_ANTBUSTER_GINARANSOM.bin" offset="132FC4" /> <rep file="x270000_REP_KANJI_FONT.bin" offset="270000" /> <rep file="x2AC000_REP_MAIN_FONT.bin" offset="2AC000" /> <rep file="x2B6000_REP_ACTION_MENU_GFX.bin" offset="2B6000" /> <rep file="x2CE000_REP_LARGE_FONT.bin" offset="2CE000" /> <rep file="x7C84_REP_ASM_RELOCATE.bin" offset="7C84" /> <rep file="x268000_REP_MISC_MENU_AND_NUMBERS.bin" offset="268000" /> <rep file="x7FDC_REP_Possible_PalleteFix.bin" offset="7FDC" /> <ins file="x300000_INS_EnglishScript.bin" offset="300000" /></build>Explanation/Notes:To simplify the management of changes to a ROM file, you are able to keep separate binary files. This is for ease of backup and editing....--------------------------------------------------------I'm working on several game-specific tools. Also general tools for bulk dumping of data utilizing pointer table data. (I need more examples of different pointer tables used in games.) So far, I am able to dump data utilizing a pointer table in the case of Marvelous and Super Bomberman 5, but I want the tool to be flexible enough to be able to read a configuration file and be able to traverse different pointer types and dump data efficiently.I've already made an older version of this tool available (comes with the Marvelous Localization Tools in the translation thread). Just wanted to see if there was any interest for me to maintain general releases. If not, I'll probably just keep it to myself because that really all I made it for...
Quote from: r57shell on January 14, 2016, 07:41:43 PMFor Sega Genesis hacking purposes I'm using asm68k. It's "just" assembler....
Quote from: r57shell on January 14, 2016, 07:41:43 PMFor Sega Genesis hacking purposes I'm using asm68k. It's "just" assembler.
Quote from: RyanfaeScotland on February 04, 2016, 08:33:55 AMAbout a week ago I noticed I was running a really outdate version of easy68K. Since updating I've found that it now has the ability to directly patch existing binaries with revised code so unfortunately DackR using this integrates the patching process into the tool I'm already using for coding / compiling meaning I think I've got my bases covered where MBuild would fit in.Sorry!
Page created in 0.046 seconds with 20 queries.