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 - Pikachumanson

Pages: 1 [2] 3
Newcomer's Board / What exactly is...
« on: February 18, 2013, 03:52:30 am »
VWF and WIP?

I know some snes roms use WIP like that Yume game Bongo is translating but that's about it.

Newcomer's Board / What happens if you don't recompress data?
« on: February 12, 2013, 05:47:52 am »
Just a hypothetical situation I was thinking about. Let's suppose I manage to crack a game's lszz(or whatever) text code and i translate the all the lines there but i don't bother to recompress which I imagine would be doing the reverse of what i did to crack the code. Would I still be able to play the rom?

Note: i would not ever do it like that, but I am just wondering what would happen because i am studying up on that format so I can take another crack at Necromancer(TG16) after I am finished translating Outlanders(NES)

Script Help and Language Discussion / Got another question.
« on: February 10, 2013, 02:09:54 am »
Got any idea what that means?

Niko by itself from I've been able to gather is an old term for victory and daylight surname.
Whatever that means... It also is supposed to denote the sound of someone smile when you say

Chyan is a condescending term used for young children or as an insult to adults.

Bacchi i believe means batch.

All together i haven't a clue what it could mean in a sci fi rpg based off a manga.
A batch of smiling dummie kids?

The context is that is listed in the status part of the menu screen right under the experience points listing and apperantly has something to do with leveling up.

Script Help and Language Discussion / I am stumped!
« on: February 08, 2013, 10:34:42 pm »
What does マルダーギレに mean?
It's said in the context of someone being taken there.

The sentence in question is:
マルダーギレに  つれていかれました

I'm thinking it means she was taken to some kind of round table meeting or conference.

Script Help and Language Discussion / Quick japanese question
« on: February 07, 2013, 06:00:48 pm »
What does
てきは いるんなものを もってるわ

I know もってるわ means have and from what i have been finding , いるんなものを means kind of the same thing.

I'm guessing てきは means enemy.

But i'm not sure how the sentence would go in english.

Personal Projects / Outlanders NES translation
« on: February 06, 2013, 10:27:39 pm »
I am putting my ninja gaiden project on hold for something I got into romhacking to do in the first place, and that's make japanese to english translations. I am working with Vaccy on translating this game. I had tried before but I got a little frustrated when I couldn't get DTE to work in the game. But we took a new approach and now the project is going full speed ahead!

Here are a few pics to show our progress:

Japanese intro

Translated intro

Japanese menu
Translated Menu

first line of game


I'll keep you updated on our progress!

Newcomer's Board / Ninja Gaiden 1 nes pallete
« on: January 15, 2013, 12:19:04 am »
Let's suppose I have two sets of pallets. 0F,30,36  and 0F, 26, 36.  And there is a sprite that uses 0F, 26, 36 and I wish to change the 26 into a 30. What I would like to do is change just one single sprite without it affecting other sprites that are assigned to 0F, 26, 36. Is it possible to maybe change a pallette pointer  for that single sprite? I mean how would you guys go about doing this? Do I have to search the rom for sprites and make changes or what? I'm not sure how to tackle this this problem since the documents on NES pallettes I've read don't really go into depth like this.

Script Help and Language Discussion / what does 南蛮打雷 mean?
« on: January 09, 2013, 02:10:57 am »
I have it translated as Nanban Lightning stroke or european lightning stroke. I'm pretty sure that is wrong though. It's for a video game I am trying to play through.

I think i got it now, nanban means westerner, southern barbarian,wild red haired man, fire in a kiln.
Must be a special move.

Personal Projects / Ninja Gaiden 1 Remix
« on: December 21, 2012, 11:36:41 pm »
I am making a full on remake of Ninja Gaiden. Everything except for Ryu is getting changed. Cutscenes, music, enemies and levels will be overhauled. Text has been expanded so I can make my own story.
Here are three screenshot of my preliminary work:

Trees need work but whatever, level 1 has been reworked.

Intro text has been changed

Basaquer sux as a first boss.

I'll post an update on my progress as I go along.

ROM Hacking Discussion / Ninja gaiden ending cutscene
« on: December 21, 2012, 02:04:05 am »
Anyone know anything about hacking the graphics to it? I can't seem to find it in a tile editor. It's compressed i bet. Does anyone know what scheme it uses so i can read uP on it?

Newcomer's Board / Y's 3 dte problem
« on: December 13, 2012, 11:45:14 am »
 Ok maybe, I just have bad luck with this dte stuff or maybe I am missing something... I don't know what!
I have followed KingMike's instructions exactly.
Here is the hex code on my editor. It's kinda blurry but you can make out the numbers or just take my word for it. It's in the same location he says to put it in which is 00029660.

Here are the results. Sadly, I get missing graphics instead of DTE.

Can anyone try out his tutorial and see if they get the same results? I have tried this on different emulators as well. Fceux 2.20, JNES, Nestculator. All the same results.
I don't want to piss anybody off here, but maybe there was something missing from the tutorial that wasn't mentioned and should be common knowledge to anyone hacking and only a dumby(me) would miss it. I have also looked at the Y's 3 english translation and I noticed that their routines are totally different in where they place their code. I'd like to ask them permission to base my project on that one but, first I'd like to get this dte thing right. I don't think this is really my fault here, I'm just not understanding why my results differ from the tutorial when all the code is the same. Right down to the jsr statement in 00028298 and the dte table in 00029700.

What I have noticed about the rom is any attempt to overwrite the FF's and 00's will result in these missing graphics I have shown above. Are there different versions of the Y's three nes rom out there and if so which one was used? I have used 01 and b1 versions of the rom with the results. I'm confused about what's going on here.

Newcomer's Board / Sorry another dte question
« on: December 10, 2012, 04:57:46 pm »
Where would the best to call my DTE routine? Right now, I got my routine in place but I feel the game is not even seeing it. I'm guessing I need some type of jump command but I have no idea where to put it since there is data right in front of all my text blocks.

Newcomer's Board / simple 6502 opcode question
« on: December 10, 2012, 01:10:24 am »
BNE $B320

BNE = D0

I get that

But how do I find the opcode value for $B320
or any other number that comes after a command?

Newcomer's Board / What is a hash table?
« on: December 09, 2012, 12:49:00 am »
Does the nes or tg 16 use it?

Newcomer's Board / Dte table assignments
« on: December 04, 2012, 12:41:48 am »
Ok i have my dte table up.

.db $01, $02

So I am thinking now $01 and $02 count as one byte yes?
If so, how about assigning them to a byte、say $11?

Programming / NES ASM pointer question
« on: December 02, 2012, 03:07:55 am »
Ok I have finally gotten my DTE routine to compile... YESSSS!!!! But now I have a question on what to with it since I have to tweak it a little to fit the game I am working on.
I have found the first line of text in Outlanders for the nes and the line of code I am looking at is this:

Code: [Select]
C965:D5 CA     CMP $CA,X @ $01C9 = #$00CMP $CA,X @ $01C9 = #$00

That is the first two letters of the intro
and over here is the next two letters:

Code: [Select]
C967:F5 C6     SBC $C6,X @ $01C5 = #$35

Since, the NES is little endian I am assuming that $01C9 and $01C5 are actually C901 and C501 in the hex editor right?
Would those be pointers and if so which one do I have my LDY statement load first?

0001C975 where this located in the hex editor
I believe it's in Rom Bank 0001C000
Here is the actual routine(s) I want to use.
I worked it from that Shin Megami dte txt that Ghideon Zhi(or was Gil Galad?) uploaded.

Code: [Select]
.org $8000

DTE_Routine: NOP
  LDY $0658        ;<-----This value has to be changed but I am not sure how I should do it
  LDA ($BE),Y      ;This is the second.
  CMP #$30         ;DTE Range compare 1
  BCC End          ;If A is < #$30, skip DTE (Branch if carry clear)
  CLC              ;Clear the carry flag - we get here because
  CMP #$80         ;DTE Range Compare 2
  BCS End          ;If A is >=#$80, skip DTE (Branch if carry set)
                   ;If we get past the upper and lower bound range compares, we have DTE!
RunCheck: NOP
  STX $07FE        ;Store X temporarily to THE DEPTHS OF UNUSED RAM
  SBC #$30
  LDX $07FF        ;Load X with a test byte from THE DEPTHS OF UNUSED RAM
  CPX #$9D         ;Compare it with test=true (#$9D in this case)
  BEQ SecondRun    ;If test=true, we're printing the second character
  BNE FirstRun     ;If test=false, we're printing the FIRST character.
FirstRun:  NOP     ;For outputting the first character...
  LDX #$9D         ;Load X with Test=true
  DEC $0658        ;Decrement load index (which gets transferred into Y)
  ASL A            ;Double A to get DTE Pair Number
  JMP Base_Routine ;Jump to the shared bits of the routine (4C2780)
SecondRun: NOP
  ASL A            ;Double A for DTE Pair Number
  CLC              ;Clear the carry cuz we're gonna add
  ADC #$01         ;Increment the accumulator
                   ;A is now the index location of the second byte in the DTE Pair.
  LDX #$00         ;Load X with Test=FALSE
Base_Routine: NOP
  STX $07FF        ;Store test byte to THE DEPTHS OF UNUSED RAM
  TAX              ;Transer A to X for the DTE table lookup
  LDA Create_DTE_Table,X  ;Load A with where ever your DTE table happens to be,X
  LDX $07FE       ;Restore X from before routine
End: NOP
  JMP $AF29        ;Jump back to the routine
Create_DTE_Table: NOP
.DSW 80            ;Create an 80 ($50) byte empty DTE table to be later filled in
                   ;This gets put -immediately- after the routine.2389

Programming / Branching out of range.
« on: November 29, 2012, 10:16:04 am »
Ok, all I want to do this subroutine into the an nes rom using ASM6.
It's KingMike's Y's 3 DTE code. But... when I run it through the assembler by itself I get branch out of range errors on lines 3, 7, 13 and 27. I know it won't work with my rom and and that's ok because I am just experimenting trying to learn how things work in 6502. I'll do the necessary changes later when I got the actual data into the rom. So basically what I did was take a blank asm file put the the routine below into it and got these error. I'd like to know what exactly am I doing wrong and how I should go about fixing it. Then, I'd like to know once I do get it to assemble into a bin how would go about putting this data into the rom? Do I need to put the offsets when I am doing the patching(I think...) process? Also when I disassemble code do I need to get rid of the offsets so I won't get any invalid opcode errors or is it cool to just leave them there. I'm sorry guys, I know I ask a lot of questions but, I'm trying really hard to get this assembly stuff down pat and it's frustrating because I feel like I can't even get my foot in the door with this stuff. Well maybe I did, because I did assemble my first 6502 program last night but that's not rom related it was just adding addresses together.

Code: [Select]
CMP #$00
LDY #$00
LDA ($9B),Y
CMP #$14
BPL $03
LDA ($9B),Y

LDA ($9B),Y
CMP #$7F
LDA ($9B),Y
SBC #$15
LDA $9700,X

BNE $02
LDY #$00
LDA ($9B),Y
SBC #$15
LDA $9701,X

Newcomer's Board / Are there any tools like xkas for the nes?
« on: November 28, 2012, 03:11:12 am »
I tried implementing the dte examples I've seen on this site through fceux but I keep getting syntax error with commands like BCC, BNE and BEQ. Xkas was suggested to me for this purpose but I see it is geared toward snes roms so I don't think it would work on an nes rom. Would you more experienced asm guys use when you are just trying change small sections of asm in an nes rom?

Programming / C++ RLE Compression/DeCompression routine
« on: November 26, 2012, 06:22:46 pm »
I originally was going to ask this question on nesdev but I didn't know the answer to their registration question. What the hell is the name of the NES DANCE PAD? :o

Anyway I was studying up on RLE and I wrote a program in C++ to compress and decompress rle strings in file. Note, my experience in programming comes from making games on the PC and college work. I am not sure how to implement this on a NES rom. Are there any improvement or things you would do to implement this in a NES rom?

I wanted to write the C++ routine first and mess around with the asm later. Write now I'm just interested in seeing the title screen graphics of the game I am working on.

Code: [Select]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <limits.h>

int rle_comp( FILE *src, FILE *dest )     //Compression routine
int prev = 0;
int cur = 0;
int run = 1;
unsigned char count;

for ( count = 0; run; ++count )
if ( ( cur = getc( src ) ) == EOF )
run = 0;
if ( ( ( cur != prev || !run ) && count )
|| ( count == UCHAR_MAX ) )
if ( fwrite( &count, sizeof count, 1, dest ) != 1
|| putc( prev, dest ) == EOF )
run = 0;
count = 0;
prev = cur;
return ferror( src ) || ferror( dest );

int rle_decomp( FILE *src, FILE *dest )     //decompression routine
int cur = 0;
unsigned char count = 0;

while( fread( &count, sizeof count, 1, src ) == 1
&& ( cur = getc( src ) ) != EOF )
while( count-- != 0 )
putc( cur, dest );

return ferror( src ) || ferror( dest );

int main( int argc, char *argv[] )
FILE *src, *dest;   //file data

if( argc == 4 )
src = fopen( argv[2], "rb" );    //if error print message
if( src == NULL )
fprintf(stderr, "error: %s can't be opened\n", argv[2]);

dest = fopen( argv[3], "wb" );
if( dest == NULL )
fclose( src );
fprintf(stderr, "error: %s can't be opened\n", argv[3]);

if( strcmp( argv[1], "--comp") == 0 )
if ( rle_comp( src, dest ) != 0 )
fprintf( stderr,
"error: I/O failure during compression\n" );
else if ( strcmp( argv[1], "--decomp" ) == 0 )
if ( rle_decomp( src, dest ) != 0 )
fprintf( stderr,
"error: I/O failure during decompression\n" );
fprintf(stderr, "error: unknown option %s\n", argv[1]);  //if you type something other than comp or decomp

fclose( src );      //close files
fclose( dest );
printf( "usage: hexdump OPTION <src-file> <dest-file>\n"  //What we see in the output screen
"\nwhere OPTION is mandatory:\n"
" --comp perform rle compression on src-file\n"
" --decomp decompress src-file into dest-file\n");

return 0;

Programming / Akagawa Jirou no Yuurei Ressha NES dakuten
« on: November 20, 2012, 02:37:39 pm »
Ok, I've now narrowed down the dakuten routine the 0XD000 section of the code and I think I've found it. I was wondering if anyone could take a quick look at this and confirm for me before I start writing over it not knowing what I'm writing over. Not versed in 6502 at all, still in the middle of that 408 page doc on 6502 they got here on this site.

Anyway, here is the suspected code I took from the FCEUX debugger:

0F:D331:B1 95     LDA ($95),Y @ $00FB = #$73
0F:D333:C9 81     CMP #$81
0F:D335:D0 06     BNE $D33D
0F:D337:DE BD 00  DEC $00BD,X @ $00BD = #$00
0F:D33A:4C 7F D3  JMP $D37F
0F:D33D:C9 80     CMP #$80
0F:D33F:D0 08     BNE $D349

and I compared it to what KingMike told me what dakuten code would look like.
ldy #$00
 lda ($20),y       ;say the text pointer was stored at $20-21
 cmp #$A0
 bcc NotDakuten   ;less than
 cmp #$E0
 bcs NotDakuten
;do stuff here with dakuten/handakuten
;other stuff

In the trace logger it looks a lot like KingMike's code and I would have posted that but, the thing goes so damn fast it's hard to do it! Anyway I am looking at lines D331 and D335 since they say CMP in the code. Any feedback would be much appreciated!

Pages: 1 [2] 3