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

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.

Topics - Pennywise

Pages: [1] 2 3
Programming / 6 bit text encoding
« on: September 03, 2020, 12:29:01 pm »
What is the process behind encoding text as 6 bits and then converting it to 8 bits in the code? I'm assuming that's what happens with 6 bit text encoding.

I get the general idea is if you have 4 bytes/characters, with 6 bit encoding, they'll only take up 3 bytes of space. How exactly does that work? I know that instead of thinking of every as bytes, the magic happens on a binary level. Some type of bit shifting?

Help Wanted Ads / English Manual Designer Wanted
« on: June 10, 2020, 09:33:17 am »
I am looking for someone to design an English manual for Princess Tomato. It's all been translated and needs someone to take the raw manual scans, clean them up and put an English translation in.

Help Wanted Ads / Help with compressed NES graphics
« on: June 05, 2020, 11:23:00 am »
I'm just throwing this out there in case anyone is interested in helping.

I'm working on a translation of Princess Tomato and pretty much all of the hacking work is done. The only thing that remains is to replace the handful of graphics that are compressed. Years back I successfully bypassed the compression (don't remember how) for the title screen and loaded uncompressed tiles. So the graphics really only need to decompressed.

ROM Hacking Discussion / An issue with the NES PPU
« on: March 23, 2020, 10:49:09 am »

I'm having an issue with the screen moving down when calling a menu in certain areas. I'm not entirely sure why this is happening, but I think it has something to do with the PPU register $2002. Through tracing the code, I've noticed this glitch happens when $2002 gets sets to #$00 and I don't know enough about the NES PPU to understand what exactly is happening.

Help Wanted Ads / [Translation] Mitsume ga Tooru NES Translation [DONE]
« on: January 15, 2019, 04:23:12 pm »
So on a whim I decided to look into translating this game the other day and it's surprisingly easy to work on and the script is minuscule. I know it's technically translated, but that's never stopped me before. My main reason for wanting to translate it is that I thought of a great title for it. "The Evil Eye" If I were to get a license to translate, release the manga etc, that's the title I'd brand it as. Anyhow, the script if anyone wants to do a quick translation.

Help Wanted Ads / Need a mapper hack
« on: August 01, 2018, 11:20:46 pm »
So, I finally finished translating Jajamaru Ninpo Chou and it turns out the ROM expansion used exceeded the mapper specs. This game went through a round of testing and I thought it finished, now I discover this. I've had the ROM tested on a flashcart and it doesn't work on hardware. So, the translation is locked to FCEUX and a handful of other emulators and I'm need of a mapper hack. There was a prototype for Taro's Quest that changed the mapper to MMC1, so a mapper hack might not be that difficult, but I am thoroughly sick of this game and don't want to look at it anymore. Is there anyone capable of doing a mapper hack for me?

Help Wanted Ads / Pennywise's Graphic Design Help Thread
« on: November 22, 2017, 02:21:57 pm »
Hey folks, I'm looking for someone to do a new title screen design for my Double Moon translation. I'm looking for something that is a little closer to the original Japanese design. A mockup is fine and please remove the moon from the mockup as it is not part of the graphic, but a separate sprite.

Current version and original.

I'm looking for some feedback and ideas I have on how to deal with this title. It was released in the US as Mercenary Force, but I don't want to use that title at all. The game really doesn't have much text, but I want to retranslate it in preparation of translating the weird sequel.

Ryusui's suggestion to me is to leave the title alone and just romanize it with maybe a subtitle such as Mercenary Force, but I don't quite agree with that. I kinda like the title Twilight Mercs vs. the Soulless Army. That's what I might use for a subtitle.

Programming / Time Twist Text Compression Code
« on: August 17, 2016, 06:38:58 pm »
So I decided to start looking into the text compression for Time Twist on the FDS. It doesn't use standard NES dictionary compression and uses something a little bit more complicated. I'm actually only familiar with dictionary and RLE compression, so I'd like to figure this out so I can learn something new. But I'm gonna need a bit of help to grasp whatever it is I'm not getting. I'm trying to do a partial disassembly of the code and I've got the end result figured out, but the middle is definitely confusing. I'm guessing it's relying heavily on bitmath to do its decompression. I'm also not even sure I've got all the code as this thing is looking beastly. Anyone curious or want to help me? If so, I'll post what I've got so far.

So there's this character/boss in the called Kimo (きもひめ) that looks like a human, but is actually a spider in disguise. It appears the name is a typical Japanese pun a la combination of two words oni and spider or some such.

Lady Recluse was suggested, which I thought was pretty good, but I don't think it matches the game well. It's a typical medieval Japan setting and I was perhaps thinking of combining a common japanese name for a girl with some type of spider word.


I'll probably just end up leaving it alone, but figured I would post here.

ROM Hacking Discussion / NES ROM Expansion Document
« on: December 21, 2014, 02:25:17 pm »
I had the idea to write up a document that attempts to explain and break down all the details that go into NES ROM expansion. Could I get some feedback on what I've written?

The MadHacker once said that "NES rom expansion is so difficult and time consuming that you might as well think of it as impossible."

That was in a time when information was scarce and emulators weren't really any good. The fact is that NES Expansion isn't that complicated despite the myriad of different mappers that do things their own way. The goal of this document is to shed light on the technical details of ROM expansion and to share some common techniques that can be used to utilize the new space.

NES Hardware Basics


Most NES games have two ROMs inside a cartridge. The first ROM is PRG-ROM and the second is CHR-ROM. They stand for Program and Character respectively with the first usually containing all the code and data and the second containing the graphics. When we say ROM expansion, we are usually referring to the PRG-ROM. The PRG-ROM is split up into different sections of equal size in what are known as ROM banks. The bank size varies depending on the game and mapper. For example, the bank size is usually either 8kb or 16kb. You can find this information out by using the emulator FCEUX. Just go to Help -> Message Log.

The 6502 CPU Memory Map

The NES accesses the PRG-ROM by loading ROM banks into a specific address area of the CPU memory map. The banks are loaded into the address range of $8000-FFFF. This makes for a total size of 32kb the NES can access of the PRG-ROM at a time.

It's story time. Once upon a time when the NES first came out, PRG-ROM sizes were only 32kb, the maximum size the NES could access at a time. This worked fine until developers said, "32kb is way too small for me to fit my game into. I want to make bigger and more complex games. I need a bigger ROM." So Nintendo developed mappers, which is what you could call fancy boards, that usually handled ROM sizes of 128kb, 256kb and 512kb. Now the NES can only handle 32kb at a time, so these mappers could "swap" banks in and out as needed, thus being able to access the entire ROM, just not at once. Take this diagram to better picture it.

Game that uses 8kb banks
|      1       |        2       |       3      |       <4>      |

Game that uses 16kb banks
|             1                 |             <2>               |

Picture that the NES CPU has slots and pretend that banks from the ROM go in there. Then mix and match however you want and that's how the NES accesses the PRG-ROM in a nutshell. But there's one very important piece of information you need to know. The very last bank in the PRG-ROM is what you would call the "fixed bank" or "hard-wired bank". It's always loaded into the the last ROM bank slot in the CPU and can never be changed or moved. The <> is there just to denote the difference.

How to determine NES ROM expansion limits

Technically speaking, the NES could supports ROMs that were 10MB in size, but there isn't a board or mapper that hasn't been designed to support such a size yet. When we talk about ROM size limits, we are referring to the maximum size a game can be that was designed for a particular board or mapper. Maximum ROM sizes are determined from the number of PRG bits a board/mapper that sets the number of ROM banks available. This is all technical mumbo jumbo that's not really necessary to explain because NESDev has an excellent wiki that just lists the max ROM size for all the NES mappers.

Question: Let's say I have a ROM that I expanded to 256kb, but the mapper/board can only support 128kb. Is that even possible?

Answer: There are two sides to the coin for this. If you wanted to play your translation on a real NES, the original board used wouldn't be able to support the ROM. However, it becomes a moot point when you factor in that flashcarts could play the expanded ROM fine. You can consider a flashcart a sort of all-in-one mapper that can handle any game size which usually maxes out at 512kb. The NES doesn't care about ROM sizes and that's the important thing to remember. A good example is the Hebreke translation that expanded the ROM which the original mapper/board couldn't support, but that a flashcart could play fine.

How does the NES "swap" banks

First off, ROM banks are numbered starting from #$00 and going up the hex scale. You take the bank number and you write them to the PRG register which is something that basically tells the NES to do the bank swap. This is what the code looks like to swap banks.

LDA #$01
STA $8000

Translating this code into English would be something like load the bank #$01 and write it to the PRG register. Think of it like if I write #$01 o $8000 then bank 1 will go into the first PRG slot in the CPU.

That is generally how the NES swaps banks, but the register value is just a made up example and will vary by game and mapper. The mapper MMC1 does its bank swaps a little different and is not the same as the above example.

How to expand an NES ROM

Well, that's actually quite simple. KingMike made a simple program called nflate that can expand your ROM for you in a jiff. Every once in a while there will be special cases where a ROM won't work properly after expansion and you'd need to troubleshoot it and expand the ROM manually. But the vast majority of games work fine after expansion. Expanding the ROM is the easy part, but utilizing the expanded space is where things get tricky.

How to use the expanded space

In the scope of translation hacking, the goal of ROM expansion is to increase the amount of space you have available so you can fit all the translated text back in without cutting it down. Let's say you have an entire bank of text. There's no way in hell you can fit that all back in the original space. Maybe if you compressed it, but that's a different subject. So what you do is split the text between two different ROM banks effectively doubling the space you have available.

Question: How does one split the text between banks?

Answer: I use two different methods to accomplish this. To keep things simple, we'll only talk about one.

First off, you need to code a new routine that contains our bank swap code. The new code requires space in the ROM and most games usually have free space at the end of the fixed bank. That's where we put our code.

Question: But what if there's no free space in the fixed bank?

Answer: TBD

So what you do is JSR from the game's text pointer load routine. Your common game's text pointer load routine will look something like this:

LDA $8000,Y
STA $0000
LDA $8001,Y
STA $0001

Y is the index that selects which pointer from the table to load. Here's a simple breakdown of the pointer table addresses:

$8000 = 0
$8002 = 1
$8004 = 2
$8006 = 3
$8008 = 4
$800A = 5

The numbers on the right are what Y needs to be in order to load a particular text pointer.

Let's say we want to we want the text to be in another bank for string 5. Let's also assume that the PRG-ROM was 128kb and we expanded it to 256kb. The game uses 16kb banks, which with 128kb total, that makes for 8 banks. So the banks for the expanded space are going to start at #$09 and up. So here's what we do

;Load first pointer byte
LDA $8000,Y
;Write it to RAM
STA $0000
LDA $8001,Y
STA $0001
;Compare if Y is less than or equal to 4
CPY #$05
;If so, skip this code and go here
BCS @Branch1
;load bank 9
LDA #$09
;swap bank 9 into PRG slot
STA $8000

Script Help and Language Discussion / Deciphering a graphic
« on: September 21, 2014, 09:40:50 pm »
I've got a challenge for the folks here. So there's this graphic that randomly appears on the stage select and on one seems to be able to make the upper character. I'd appreciate some help with this!

Script Help and Language Discussion / Translate a small manual
« on: April 20, 2014, 06:02:41 pm »

Could someone translate this small manual for me? I don't think it would take very long. Thanks.

Script Help and Language Discussion / Angel Marlowe Credits
« on: March 06, 2014, 06:32:52 pm »
So, it was recently brought to my attention that Angel Marlowe has some secret/alternate closing credits that are accessed with a password. If I had to guess, they're the names of the various characters in the game.

Script Help and Language Discussion / ドクロべえ
« on: February 27, 2014, 06:33:38 pm »
ドクロべえ is an enemy that uses another enemy as a disguise before it reveals itself. Oddly enough the ninja cat Kurobei from Ganbare Goemon uses a disguise when you first meet it. It can't be a coincidence given the similarities, but I don't know what the hell is going on. Anyone got any ideas/theories on this one?

Just to be clear, I think there's a good possibility that this name might possibly be a pun. If that is the case, I would not want to translate it as Dokurobei and would rather translate the spirit of it instead, so the player can understand the joke, if there is one.

This appears to be a Yatterman reference and/or a lazy joke. Googling the name gave me this instead.


Apparently they swapped the Katakana with a Hiragana, which I guess is the equivalent of using Caps in English.

Script Help and Language Discussion / Help Replacing Dejare Phrases
« on: February 14, 2014, 03:35:18 pm »
I am in need of some major creative help for a game I'm translating. I'm currently at a town that is hosting a pun contest revolving around fish. The puns are all dejare, which are Japanese wordplay puns. They cannot be both translated and the joke kept intact. So they need to be replaced. There are at around 30-50 of them and well, I need all the help I can get. The following rules:

Any type/species/kind of fish or fish-related is game.
Only 1 pun per fish
Puns can only be a maximum of 19 characters

Thanks for any help.

Script Help and Language Discussion / Translating stupid puns
« on: December 26, 2013, 08:29:32 am »
So I currently have a tomato pun/riddle that asks what is spelled the same forwards and backwards. In Japanese that is tomato, but in English it doesn't work. I'm think of two options here, to keep the riddle, but change the subject, or to keep the tomato and change the riddle. Anyone got any bright ideas?

Script Help and Language Discussion / Daruman
« on: December 05, 2013, 05:17:34 pm »
I've found this name in various video games and it seems to be based on a Daruma doll or something. Is there a translation for the name or something best left alone?

Script Help and Language Discussion / Moai Kun Manual
« on: November 29, 2013, 01:45:57 am »
Would anyone be willing to translate this manual of the game for me? I'm doing an article on this game for HG101 and if possible I'd like to fill out the article with information contained within the manual. The whole thing doesn't need to be translated, just the important bits.

Off the top of my head, obviously the back story is important and the premise of the game as well. Who are those things you rescue etc. Who are those enemies? What that M 7.8 means (I'm guessing it has something to do with the Richter scale)? Anything else that might look important or interesting etc.

Pages: [1] 2 3