News: 11 March 2016 - Forum Rules, Mobile Version
Current Moderators - DarkSol, KingMike, MathOnNapkins, Azkadellia

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Psyklax

Pages: [1] 2 3 4 5 6 ... 30
Newcomer's Board / Re: Entering Fonts for Kanji
« on: April 25, 2018, 06:06:39 am »
You got the first part correct, however...

30 03 corresponds to the kanji with a byte value of 30 from bank 3 of the kanji characters.

That's not exactly what I meant. I was describing how one particular game did it, and every game is different. Some games are happy with 256 byte values for everything: kana, alphabet, numbers, punctuation, plus enough kanji to get by. Games with huge amounts of text need a different system.

I chose LTTP because I thought it might be a good starting base for someone who has no experience with ROM hacking. Would you recommend I put LTTP on the back burner and perhaps revisit it once I get a better understanding of ROM hacking?

I just don't know what you hope to achieve from hacking LTTP at all. Why translate a game that's already translated? If your intention is just to get into hacking somehow, your best bet is to start with something simple, and by that I mean 8-bit.

My first hack was a Game Boy Color game with lots of text in a big cartridge. The 8-bit CPU made it relatively simple, there was no kanji to complicate things, there was tons of room inside the ROM... it was pretty simple.

I do think the NES is even better though: the CPU is even simpler to understand (for me), there's a ton of documentation and previous hacks, plus of course people like me and KingMike can give you excellent advice given our experience on the system. ;)

Just find a game that's not been translated and have a go, the simpler the better. Any questions, let us know. :)

Newcomer's Board / Re: Entering Fonts for Kanji
« on: April 24, 2018, 06:06:36 pm »
What in God's name are you doing?! I think you misunderstood what another poster on the forum told you.

You do NOT need to edit the Japanese in the ROM! They're just pictures, nothing more. If you're trying to find text in the ROM, you do NOT need to do anything to the graphics! Relative searching is just a way to figure out where some text is, and then make a table, but even relative searching is hardly necessary. Besides, this is Link To The Past, for crying out loud, a game that is already in English, and probably has documentation out there detailing its inner workings.

Look, the way games use text, they have a bunch of bytes, and each byte refers to a different character. Different games have ways of dealing with kanji, but let's start with NES games that use no kanji as a starting point.

Most games draw the kana in the graphics banks in the typical Japanese order: a, i, u, e, o, ka, ki, and so on. Then, based on that order, a game will know where to find a particular graphic for a character and put it on the screen. In a byte we can go from 00 to FF, so let's say "a" is 01, "i" is 02, and so on, with hiragana and katakana, and punctuation and numbers and a capital English alphabet if need be. That'll all fit in the 256 limit we have for one byte. So when the game sees 04, it puts the graphic in that position on the screen - in this case, "e".

Kanji is a problem because it invariably needs more than 256 characters, so there are different ways of doing it. The simplest is to use two bytes for each character, giving a total of 65,536 possibilities, but that's not very economical so 16-bit console games don't usually use it. Another way is having, say, four banks of characters, and saying which bank you want. So 00 01 picks bank one, 00 02 picks bank two... then you can use whatever characters you need in that bank, then switch with that two-byte code.

I really hope you're following what I'm writing because I'm rushing a bit, now that I realise you got some terrible advice and got off on the wrong foot. :) But please, stop drawing all over the kanji because you're wasting your time! What the guy in the other thread meant to say - but phrased it poorly - was "yes, if there is no English alphabet, you should replace SOME of the kana with it", but not the whole thing! Just do your A to Z and be done with it, that's all you need.

Again, is there a specific reason you wanted to get into LTTP? It's really not a good first choice, given that it's already in English (I'll never understand why people do this). I highly recommend starting with a NES game which isn't already translated (there are hundreds) and use FCEUX to help you with debugging. Transitioning from NES to SNES is easier than starting from scratch with the SNES. Even if it's a game you don't care much about, it's better than wasting time on something that really doesn't need it.

Any other questions, please ask. I really don't like seeing people get in a pickle like this. :D

Newcomer's Board / Re: Help with newest NES Sonic The Hedgehog patch
« on: April 23, 2018, 03:02:39 am »
And just for my last word on the issue: 7zip is certainly worth using, but archiving a patch in anything other than regular old Zip is stupid. So I agree that the patch is in the wrong archive format. :)

Newcomer's Board / Re: Help with newest NES Sonic The Hedgehog patch
« on: April 22, 2018, 01:16:49 pm »
My recommendation to staff is to request that FuriousHedgehog re-upload the patch because some people are going to have issues with it.

Or just download 7zip. I haven't used WinRAR or WinZip for about a decade. I figured everyone had moved over to 7zip by now. :)

Newcomer's Board / Re: Alternative Tutorials
« on: April 22, 2018, 02:08:51 am »
this is a maker community and everyone here pulls their own weight

Exactly. My first post on the forum was to say "I've translated all the menus and 6% of dialogue for three different games, and I'm going to show you my progress as I do the rest of it". The reason was that I wanted people to know that I was capable of doing things for myself, and wasn't going to ask people to help me.

Everything I learnt about ROM hacking, I learnt from this site. Whether from the documents section, which isn't nearly as bad as you suggest, or from searching the forum, or from occasionally asking very specific questions, like "how can I use 8-bit ANSI characters instead of 16-bit Shift JIS characters on the PC-98?".

If you click on my profile and scroll through my posts, you'll see I've been very helpful, giving long tutorial posts, when I've known exactly what someone wants to do.

Thing is, we have no idea what you want to do, or which actual tutorials you're reading, or whether you've searched on the forum for your query. All we know is you don't like something. Can you please tell us, specifically, what you want to do. That will give us a starting point.

Newcomer's Board / Re: Alternative Tutorials
« on: April 21, 2018, 01:51:48 pm »
I went through the tutorials provided on and found them to be a mess.

Well I suppose you want a refund, then? ::)

Seriously, dude, the guys writing those tutorials are not professionals with training, providing a service for you. They're guys doing this for a hobby, who thought they'd take time out of their life to help other people out. Why? They had no reason to do it, nobody thanks them for it.

Meanwhile, you registered on the forum, not to ask any specific questions on whatever specific hacking topics you had in mind - a particular game or system, what kind of hacking you want to do - but instead to tell everyone that the tutorials here are a "disaster", and whether we can recommend other websites than this one.

Talk about the perfect Newcomer's Board post. Welcome to the forum!  8)

Newcomer's Board / Re: I need a little help with table files
« on: April 19, 2018, 03:31:39 am »
To be honest, I never use relative searching at all, there's always a better way to find text. What system are you looking at? If it's the NES then it's very easy to find the text, and just making a table file is usually as easy as looking at the order of the kana in the graphics bank.

Newcomer's Board / Re: Hacks not on the site
« on: April 19, 2018, 03:27:12 am »
I feel like this should be written on the front page, given how many people ask: this site is run by users. If nobody submits a hack, it won't turn up. If someone out there on the web has made a hack, but hasn't submitted it here, then obviously you won't find it here. Browsing the archives you'll find countless submissions which state "this isn't my hack, I found it online somewhere".

Personal Projects / Re: Dragon Warrior 1 Spanish Translation
« on: April 18, 2018, 02:56:34 am »
The extra DTE code and lookup table take up extra space; wherever you end up placing them, they run the risk of generating incompatibilities with other patches that use that same space.

You're right: this is the most important point. There's a section in DW that's empty and perfectly placed for a DTE table, but if another hacker decided to use that space, you're screwed. In this case, you could just keep your text shorter than the English one and not use DTE. It's funny because I'm not used to translating from English, obviously. :D Going from Japanese usually means DTE is either useful or even essential, but if you're going from an English base, it's probably not necessary. I just assumed Spanish would be more wordy than English, but I may be wrong about that - and besides, more concise translations would solve the problem.

That said, learning how to make DTE work in a ROM is a good learning experience, but one which is more useful for Japanese games. Translating from English to Spanish is WAY easier. :)

Also, regarding your point: I was making patches to double experience and gold in several RPGs. I did a patch for Phantasy Star on Master System and found a nice dozen bytes or so that were unused, but there's an awesome retranslation patch that uses that exact space for whatever, so I couldn't do it. :(

Personal Projects / Re: Dragon Warrior 1 Spanish Translation
« on: April 16, 2018, 05:04:59 pm »

Well, that's easy. :) I'll quickly explain what I did.

You may remember the text dump file I gave you, so all I did was remove everything except this line and paste your text in place of what was there. I had to replace the other bits of dialogue at $8032 with (.) because the letters missing from your table file meant it wouldn't work. Then I used Pointer Tables to insert it into the ROM: just selected the text file, the table and the ROM, and clicked Go.

In case you don't have Pointer Tables:
People use other utilities but I like this. It supports DTE, and it's very flexible so it'll work with any game, pretty much. Only downside is you have to edit your own pointers.

So I finally had to edit the font in the ROM to replace those five letters with á é í ó u, but you'll see that it's not very good: there's just one pixel above the text, so I just added a few pixels on that row, and the effect isn't great. I don't know what people usually do to put accents on an 8x8 font.

So if we wanted to use DTE (if it's necessary), it's easy. We do as I said before: finished script through DTEOpt, stick what comes out into the ROM's DTE table, put them in the table file, insert with Pointer Tables. Easy peasy.

If you need any help, let me know. ;)

FYI: King Mike's DTE doc:
I think I spotted a few little errors which can make it difficult to understand, but eventually you'll get the idea.

Personal Projects / Re: Zelda II Redux
« on: April 16, 2018, 02:12:52 am »
Regarding the green text: if anyone's interested in how to figure out that you change those bytes, I answered someone else on the topic:

Newcomer's Board / Re: Ghostbusters NES (Fuel change)
« on: April 16, 2018, 01:56:37 am »
You'll need assembly. First you use FCEUX's RAM Search to pinpoint the location of your fuel in RAM, then use breakpoints to find the instruction that modifies it, and from there work to change it. The last part is the tricky part, and I'm too tired to get into it now. :)

What am I doing wrong?

Good question, because I've done this with two other games and they worked fine. Haven't tried this yet, but if they've been done properly, they should work.

There is ONE thing... did you go in the options menu and turn on HD packs there?

Newcomer's Board / Re: Looking to start with GB/GBC modifications
« on: April 15, 2018, 06:15:21 am »
I can see you're a bit confused, so let me try and help: I've used BGB before to hack a couple of GB games.

Let's look at the debugger window and help you understand what each of the four windows are. The bottom-left window is the address space. For the CPU to read and write what's going on in the computer/console (the RAM, the ROM, other things) it needs an address space. The GB uses a Z80 CPU, which has a 16-bit address space: this means the most it can address is 64 kilobytes, or from $0000 to $FFFF. This space is shared by different things, and if you want to know precisely where everything is, you can look at a memory map.

Helpfully, BGB tells you exactly what the memory is mapped to at any given moment: in your screenshot you can see ROM0:0000, which means that that part of the address space is what's in ROM bank 0. 64KB isn't a lot to work with, so the GB uses bank switching to have bigger games (the NES does the same thing).

You'll notice that from $0000 to $7FFF, there are two ROM banks, usually 0 and 1, but the game can switch these at will during play - sometimes even during a single frame. After that you have VRAM (where the video information is stored); SRAM (kept on cartridges that need to save games, or just have a bit of extra RAM); WRAM (work RAM, the main RAM used by the console to do general stuff during a game); ECH (echo RAM, just echoes what the work RAM does); OAM (object attribute memory - sprites, in other words); an unused area; I/O (all the hardware registers that control different things like player input); and HRAM (high RAM, often used for regular things because it's a bit quicker than the work RAM).

Phew! Anyway, the top-left window is the actual game code. This is what's being executed to run the game, and is generally stored in ROM (usually bank 0 because that never changes). From left to right: the address; the bytes (opcodes) that are used for this instruction; a disassembly of that instruction; and a bit that I'm not sure about - maybe just a comment on each line? I don't know what the numbers mean, but it doesn't matter.

Top-right you'll see the current state of the Z80's registers. These are small bits of memory that the CPU uses to do things. For example, if you kill a baddie and get 100 points, the game might find the points value in ROM, load it to BC, load your current points to AF, add the two together, then store AF back to RAM.

The bottom-right is the stack: this is a temporary RAM area that acts like, well, a stack. You put something on top of the stack, and you can pull stuff off the top, too. It's commonly used by games because it's very fast - you can pile a whole load of things on the stack before pulling them off in quick succession. Sometimes when you're hacking, you need to find stuff that is on the stack.

So now hopefully you at least understand what you see, though I'm sure there are plenty of things you still need to know. Let me help you figure out that first idea you mentioned: giving two for a star instead of one.

Yes, you need the cheat searcher, so here's how to use it. I've never played the game so forgive me if I don't understand something... :) Open the cheat searcher (it's a bad name, it should be a RAM searcher because it's not just for cheating), and search for an 8-bit value equal to 0 (because I guess you have zero stars at the beginning, right?). 8-bit values go up to 255, so I don't think you'll be needing to look for 16-bit values here.

Once you've done the search, you'll see a ton of RAM addresses with zero in them, so now go collect one star and now search for 1 instead of 0. See, what we've done is say "only show the addresses that had zero when I first clicked, and one when I clicked again", therefore severely limiting the possibilities. Go get one more star and search for 2. I'd be very surprised if you haven't narrowed it down to a single address, so assuming you have, right-click the address and go there in the debugger.

Remember that the Z80 is little-endian, so if you were to have more than 255, the larger byte would go second (i.e. 02 01 equals 258). Try changing the "02" you see to "09" or something, and see if the total in the game changes. If so, great! We know where the stars are stored in RAM, so now to change the code. This is the tricky bit, because you need to understand assembly, but it's not as hard as it sounds.

Right-click the address and "set access breakpoint", and add a breakpoint "on write" (because we want the game to stop when it writes to that address with the new star value). Now get another star and the game should freeze with the debugger on the instruction that's writing to the address.

Now, without actually doing it myself, I can't say what is going to happen. :) But I can say that, unfortunately, this may be where you encounter the problem with this kind of hack. :) See, there's an instruction on the Z80 that lets you add one to something, which is easier than saying specifically "add x amount to this". So changing 1 to 2 isn't easy, because you need a new instruction - and that instruction needs at least two bytes, unlike the INC command. Since you can't even move the code a single byte without crashing the game, you'll find it difficult to do this. There IS a way which involves jumping to an empty part of the ROM and putting the new code there, however, but I think this is enough for one day. :D

So, read what I said, play around a bit, and I hope you'll figure a few things out! ;)

Newcomer's Board / Re: Problems Id'ing a Required ROM (NOT A REQUEST!)
« on: April 14, 2018, 01:55:29 pm »
I really don't understand what you're doing wrong. I took Super Mario Kart (U) [!].smc from GoodSNES V3.27, patched it with Lunar IPS, works perfectly. There is NO header in the ROM, as far as I can tell they've been removed from all the GoodSNES ROMs.

Newcomer's Board / Re: Problems Id'ing a Required ROM (NOT A REQUEST!)
« on: April 14, 2018, 09:11:00 am »
Well, I patched all 3 region ROM's in the Goodset and No-Intro as well as a couple of randoms of which I have no idea of their origins.  None of them worked. :(

Not true. :) I just took the three best dumps for the three regions, added $200 byte headers to each, and patched all six resulting files. The US version worked perfectly. So I'm not sure what you're doing wrong there.

For reference, here's the working ROM:

GoodSNES name: Super Mario Kart (U) [!].smc
CRC32: CD80DB86

So, how did it go? Did you see my edit to my original post? It shows where you can find all the animation frames in the ROM (and that he's not a sprite). Knowing what I know now, I'm sure you'll have no problem changing the animation to whatever you like. :)

Newcomer's Board / Re: Looking to start with GB/GBC modifications
« on: April 13, 2018, 06:23:34 am »
I'm having a hard time grasping how the assembly commands I see tie to game elements. Like... for numeric changes, I get that.  But when it comes to these commands somehow reading an input and moving an object on the screen a particular way, I don't understand how that works yet.

I haven't got much experience with the GB, but I can say that on the NES, the information on which button is pressed is stored in a register.

Basically, each button and D-pad direction can be either on or off, so they're like bits (binary digit). Every single frame, the system looks at the player input register to see which bits are activated, and based on that information, decides whether to do something. So if you're at the title screen of Megaman, for example, the game checks for input every frame and does one check of what it finds: is the bit connected to the Start button active? No? Carry on. Yes? Ah, time to start the game!

The same applies during the game. Is the user pressing A, or B, or a direction? The game code does something based on what it sees there, it's as simple as that. Let's say you want to switch the A and B button actions around. Simple: you break on a read from the input register, then look where it stores the result, and find that check. Then just swap the bits around.

That's the basic idea of that, but I'm sure you have many more questions. :)

Personal Projects / Re: Dragon Warrior 1 Spanish Translation
« on: April 13, 2018, 06:05:14 am »
Before you go too far down the DTE path, it might be worth checking to see whether your script is small enough to fit into the existing space uncompressed.

I already had a working DTE system before werewolfslayr925 started working on this, so don't worry, it makes sense to use it. ;) I imagine Spanish can be even lengthier than English, so using DTE ensures he needn't worry about space concerns.

When I get a chance, I'll look again at my modified ROM to refresh my memory. Regarding your question about the letter combos, abw answered it pretty well, but basically you have a table with all the common combinations in a row. So if "la" is a common pairing, you have the two bytes for "la" written there. Then when the game sees a byte in a particular range, it uses that table to see where to get the two letters.

I'm simplifying of course, but if you're really curious you can read the same doc by KingMike that taught me how to do it.

I have an idea: paste the text for the King's introduction in Spanish, along with which letters I'll need to replace with Spanish diacritics, and I'll put it in the game and show you how I did it. Then you can try with the rest of the game. :)

One question: why? What good reason can one have for playing NES games on a GBA in 2018? There are so many better handhelds for such purposes, not least because the GBA actually has a lower resolution than the NES, meaning the Classics released had modified graphics to make them look better.

Not only that, but there are several actual NES emulators for the GBA, which would give far better functionality than injecting a ROM, plus be a lot less effort.

I have a Wikipad tablet which comes with a gamepad attachment, so playing NES games on a huge HD screen is way better than trying to hack a GBA. Seriously, I can't think of a single good reason to do this. :D

Pages: [1] 2 3 4 5 6 ... 30