71150568 visitors

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

Pages: [1]
ROM Hacking Discussion / SNES Palette: Transparent Color #0
« on: July 21, 2013, 11:48:23 am »
I have a 2BPP font that requires 4 colors to be able to properly handle the anti aliasing on the font. The problem I've run into is the color at index #0 in the palette is transparent. What I would like to do is to specify the starting index of the palette as something other than #0 for this background. Anomie's register document seems to suggest this is possible for *sprites* but I don't see anything about backgrounds.

Alternatively, if there is a way to toggle off the transparent property of color #0 that would be ideal.

Thanks for the help, guys. :)

General Discussion / Name that tune!
« on: August 25, 2012, 12:03:31 pm »
I've spent the last 4 years trying to figure out what the music playing in this video is. Does anyone happen to know? It's a long shot, but maybe someone knows.

ROM Hacking Discussion / Version Control and Romhacking
« on: March 28, 2012, 01:07:51 am »
So I've recently discovered the miracle of revision control (yeah, I know I'm  late to the party :P) and I'm wondering if anyone uses it for their romhacking projects? I know I'm definitely going to be using some sort of revision control from here on. Not looking for suggestions or anything.  I just wanna see what people are doing.

ROM Hacking Discussion / Unix/Linux Tools
« on: March 07, 2012, 06:37:05 pm »
So I'm running Ubuntu in an attempt to better familiarize myself with Linux and I'm beginning to have second thoughts because all of my romhacking tools were Windows based. So I'm wondering if anyone has any suggestions. There's a grand total of 8 Unix tools in the database, so that wasn't much help.

Gaming Discussion / X-Box 360 Memory Card Question
« on: January 09, 2012, 07:42:08 pm »
So I had a 360 (the arcade version) that died on me that came with a 256MB memory card. I bought a new 360 with a built-in 4GB HDD. My problem is...I can't figure out any way to get the data from my memory card onto the hard drive. There's no input slot for the memory cards that I can see. Anyone care to help me out?

General Discussion / Professional Code of Ethics and Romhacking
« on: December 05, 2011, 12:23:36 am »
Most professional organizations have a code of ethics that its members are supposed to follow. For the computing industry we have something like the ACM or the IEEE and I'm wondering, is it possible to be a member of these organizations AND still be a romhacker? For reference, here is the ACM's code of ethics:


Of particular interest is section 1.5: Honor property rights including copyrights and patent. Now in the strictest sense, this would disqualify us from joining such organizations, but is there any wiggle room that's justifiable? What do you guys think?

Note: I intentionally put this in general discussion so everyone (hackers and nonhackers alike) can participate.

General Discussion / Play Asia Coupons!
« on: November 30, 2011, 09:04:44 pm »
I've got two coupons that I'm not gonna use:

Get US$7 off a purchase of US$77 or more

Get US$15 off a purchase of US$150 or more

Whoever PMs me first can have them. :)

ROM Hacking Discussion / ROM Hacking And Resumes
« on: September 12, 2011, 04:30:58 pm »
I'm in the process of constructing a resume and I've noticed that most of my programming skills have been gained because of hacking, which leaves me very little in the way of tools and programs that demonstrate my skills.

So I'm curious about what the rest of you do. Do you include your romhacking activities even though they do exist in a legal gray area and if so how do you phrase it? Clearly the word "hacking" is going to send up red flags in a typical non-tech savvy HR manager, so using that term is less than advisable. As much as I'd like to include my romhacking activities, I think for now I'll refrain simply because I'm really uncomfortable discussing it with people who are clueless about it.

I'd really love to hear the opinions of people who work in industry on this topic.

Programming / C++ Member Function Pointers
« on: August 10, 2011, 07:14:23 pm »
I've been working on rewriting SEKAS in C++ and making it all object oriented so it's easy to manage and I've hit a snag. Originally I used the opcodes as an index to an array of function pointers to call the appropriate function to assemble the opcode and operands.

Now I've made all of the code generating functions private member functions of the M68K_Opcode class and I'm attempting to do something similar. I've created an array of function pointers to all of the code generating functions and then I've created another array with all of the valid opcode mnemonics. The code gets the opcode, runs through the list of mnemonics until it finds the correct one, then it's supposed to call the associated function from the function pointer array. Problem is Visual Studio keeps giving me the following:

error C2064: term does not evaluate to a function taking 0 arguments

for this line:

Code: [Select]
I've spent the past few hours reading and re-reading things online but nothing has been particularly helpful. So, anybody care to help? Or maybe there's an easier way to implement what I want. I'm open to ideas. The whole reason I'm rewriting this thing is so it's easier to maintain and fix bugs and for some much need OOP practice.

Code: [Select]
bool M68K_Opcode::assemble()
const unsigned int OPCODE_COUNT = 71;
//A sort of jump table to the code generating functions
void (M68K_Opcode::*__ops[OPCODE_COUNT])(void) =
&M68K_Opcode::abcd, &M68K_Opcode::adda, &M68K_Opcode::addi,
&M68K_Opcode::addq, &M68K_Opcode::addx, &M68K_Opcode::add,
&M68K_Opcode::andi,     &M68K_Opcode::and, &M68K_Opcode::asl,

&M68K_Opcode::asr, &M68K_Opcode::bchg, &M68K_Opcode::bclr,
&M68K_Opcode::bra, &M68K_Opcode::bset,     &M68K_Opcode::bsr,
&M68K_Opcode::btst, &M68K_Opcode::chk, &M68K_Opcode::clr,

&M68K_Opcode::cmpa, &M68K_Opcode::cmpi, &M68K_Opcode::cmpm,
&M68K_Opcode::cmp, &M68K_Opcode::divs, &M68K_Opcode::divu,
&M68K_Opcode::eori, &M68K_Opcode::eor, &M68K_Opcode::exg,

&M68K_Opcode::ext, &M68K_Opcode::jmp, &M68K_Opcode::jsr,
&M68K_Opcode::lea, &M68K_Opcode::link, &M68K_Opcode::lsl,
&M68K_Opcode::lsr, &M68K_Opcode::movea, &M68K_Opcode::movem,

&M68K_Opcode::movep, &M68K_Opcode::moveq, &M68K_Opcode::move,
&M68K_Opcode::muls, &M68K_Opcode::mulu, &M68K_Opcode::nbcd,
&M68K_Opcode::neg, &M68K_Opcode::negx, &M68K_Opcode::nop,

&M68K_Opcode::not, &M68K_Opcode::ori, &M68K_Opcode::or,
&M68K_Opcode::pea, &M68K_Opcode::reset,   &M68K_Opcode::rol,
&M68K_Opcode::ror, &M68K_Opcode::roxl, &M68K_Opcode::roxr,

&M68K_Opcode::rte, &M68K_Opcode::rtr, &M68K_Opcode::rts,
&M68K_Opcode::sbcd, &M68K_Opcode::stop, &M68K_Opcode::suba,
&M68K_Opcode::subi, &M68K_Opcode::subq, &M68K_Opcode::subx,

&M68K_Opcode::sub, &M68K_Opcode::swap, &M68K_Opcode::tas,
&M68K_Opcode::trapv    ,&M68K_Opcode::trap, &M68K_Opcode::tst,
&M68K_Opcode::unlk, &M68K_Opcode::illegal

//instruction opcodes:
//these are used as indexes to call the correct function from __ops[]
char __ops_indexes[OPCODE_COUNT][8] =
"abcd", "adda", "addi", "addq", "addx", "add", "andi", //7
"and", "asl", "asr", "bchg", "bclr", "bra", "bset", //14
"bsr", "btst", "chk", "clr", "cmpa", "cmpi", "cmpm", //21
"cmp", "divs", "divu", "eori", "eor", "exg", "ext", //28
"jmp", "jsr", "lea", "link", "lsl", "lsr", "movea", //35
"movem","movep","moveq","move", "muls", "mulu", "nbcd", //42
"neg", "negx", "nop", "not", "ori", "or", "pea", //49
"reset","rol", "ror", "roxl", "roxr", "rte", "rtr", //56
"rts", "sbcd", "stop", "suba", "subi", "subq", "subx", //63
"sub", "swap", "tas", "trapv","trap", "tst", "unlk", //70

bool success = true; //set to false if an error occurs
string mnemonic = opcode; //this will equal opcode with the size field removed

//first check the size field

if(opsize != NONE && opsize != INVALID)
//remove the size field
int pos = opcode.find('.');
//we can assume that if an error wasn't flagged by set_size()
//then a '.' is present in the opcode

//next use the mnemonic to determine which opcode function to call
if(opsize != INVALID)
//first convert all upper-case letters to lower-case
for(unsigned int i = 0; i < mnemonic.length(); i++)
if(mnemonic[i] >= 'A' && mnemonic[i] <= 'Z')
//ASCII upper-case letters are 0x20 more than their
//lower-case equivalent
mnemonic[i] += 0x20;

//next use the mnemonic as an index and call the code generating function
for(unsigned int i = 0; i < OPCODE_COUNT; i++)
//call the appropriate function and generate binary data

return success;

And all of the opcode functions are declared as void with no parameters:

Code: [Select]
void exg();
void lea();
void link();
void move();

Programming / C++ List Container Question
« on: August 05, 2011, 10:25:43 pm »
I'm not exactly sure how to explain this, but I'll try. So I'll throw some code up first and then try to explain.

Code: [Select]
list<int> int_list;

for(int i = 0; i < 5; i++)
int_list.push_back(i + 100);

Is there a way for me to return a pointer to say the third element in the list and then traverse the list either forward or backward? Simply using a list of int pointers won't accomplish what I want, because that will only give me access to the specified element in the list. What I want is to be able to keep track of a list of special values, then if certain conditions are met change those values AND alter the values immediately after them.

So, say I start at the third element in the above. I want to be able to add 20 or something to the third element, the fourth and the fifth if a certain condition is met. I understand I can use an iterator to traverse the *entire* list, but that's not what I want. There's only certain elements I need to access and alter while the rest I want to leave alone.

tl;dr: is there a way to get a list element to return and iterator to the *next* element in the list?

Script Help and Language Discussion / Few Strings and Names
« on: July 01, 2011, 04:05:40 pm »
These are (hopefully) the last few things that need to be translated in Gundam F91. The strings are messages the communications officer sends you at the end of a battle. The rest are names from the credits. Anyone care to run through these really quick? :)

//POINTER #0 @ $CCDD6 - STRING #0 @ $CCE96


//POINTER #1 @ $CCDD8 - STRING #1 @ $CCEB6




/POINTER #41 @ $CCE28 - STRING #41 @ $CD62A
//POINTER #42 @ $CCE2A - STRING #42 @ $CD62A
//POINTER #43 @ $CCE2C - STRING #43 @ $CD62A
//POINTER #44 @ $CCE2E - STRING #44 @ $CD62A
//POINTER #45 @ $CCE30 - STRING #45 @ $CD62A
//POINTER #46 @ $CCE32 - STRING #46 @ $CD62A
//POINTER #47 @ $CCE34 - STRING #47 @ $CD62A
//POINTER #48 @ $CCE36 - STRING #48 @ $CD62A

//した [END]

//POINTER #49 @ $CCE38 - STRING #49 @ $CD64A

//ムへ 1しょ[LINE]
//つしました [END]

//POINTER #50 @ $CCE3A - STRING #50 @ $CD66D
//POINTER #51 @ $CCE3C - STRING #51 @ $CD66D

//ぜんめつ [LINE]
//ます [END]

//POINTER #52 @ $CCE3E - STRING #52 @ $CD689


//POINTER #53 @ $CCE40 - STRING #53 @ $CD6AC


//POINTER #54 @ $CCE42 - STRING #54 @ $CD6CD


//POINTER #55 @ $CCE44 - STRING #55 @ $CD6F0


//POINTER #60 @ $CCE4E - STRING #60 @ $CD739


//POINTER #63 @ $CCE54 - STRING #63 @ $CD759

//[INDENT]<$04>だいがんめん GANMA KAO[END]

//POINTER #75 @ $CCE6C - STRING #75 @ $CD7C6

//[INDENT]<$04>なんでも NORIRIN[END]

//POINTER #78 @ $CCE72 - STRING #78 @ $CD7E6

//[INDENT]<$04>よるの ていおう NABE[END]

Sorry for the crap from Cartographer being included. It just makes my life easier when I have to insert the translation in the file. :p Thanks in advance. :)

ROM Hacking Discussion / Play Testers Wanted
« on: May 09, 2011, 05:38:15 pm »
With any luck, Gundam F91 should be ready to enter testing within the next week or two. I had originally hoped to have it ready by today but real life got in the way. C'est la vie.

Anyway, I only need two or three people who hate themselves to play through this game and make sure there are no bugs or weird sounding strings any where. The game is pretty short. I'd say maybe 4 or 5 hours total from start to finish. If you're interested, shoot me a PM or post up here. It also helps if you've been around a while and are trustworthy. I don't like patches getting out until I'm completely happy with them.

ROM Hacking Discussion / Localisation Article on GameDev.net
« on: April 15, 2011, 07:37:15 pm »

It's always interesting to read how the pros do it. Thought someone here might enjoy this.

ROM Hacking Discussion / Font Artist Needed
« on: April 11, 2011, 01:07:41 am »
Sorta. Would anyone care to try shrink the below font (just the ABCs) down as much as possible. I really want to use this font for Gundam F91's menus but I don't have enough screen space for some of the longer weapon names. If I can get this shrunk down enough where it's feasible, I'm considering VWF-ing the 8x8 text screens. There's not many of them and I'm almost certain I have the VRAM space to pull it off easily. So, yeah. Thanks for the help.

Programming / SNES DMA Question
« on: March 30, 2011, 10:25:02 pm »
The below code transfers two 2bpp 8x8 tiles from RAM at $7e6000 + (!ram_index << 5) to VRAM at $2000 + (!ram_index << 4). (I'm shifting by 4 due to the way VRAM is addressed.) I've stepped through this code and I don't see any problems with it that are glaringly obvious. The data is in RAM and all the addresses are being calculated correctly. However, once the lda #$80 : sta $420b is executed, none of the data is transfered to VRAM. I confirmed this using bsnes. So any suggestions?

Code: [Select]
;dma_char ;
;This routine DMA's the last ;
;8x16 character drawn in the ram;
;buffer to VRAM. ;

print "dma_char @ ",pc

rep #$20

lda !ram_index ;determine the location of the 8x16 to DMA
asl #4

clc ;the location in  vram to put the 8x16
adc #$2000
sta $2116

lda #$1801
sta $4370

lda #$0020 ;two 8x8 2bpp tiles = $20 bytes
sta $4375

pla ;the location of the 8x16 in ram
adc #$6000
sta $4372

sep #$20

lda #$7e
sta $4374

lda $4212 ;check the vblank flag
and #$80
beq wait_for_vblank

lda #$80
sta $420b


Script Help and Language Discussion / Chinese Translator Wanted
« on: February 10, 2011, 09:17:46 am »
I'm working on a small Chinese game, but I need a translator who's willing to translate screenshot-by-screenshot. All the text in the game is stored as graphics and as such I can't give you a text dump to work with. If you're interested, shoot me a PM. I'll fill you in on the details. I'm trying to avoid announcing this until I know for certain I'm gonna be able to get it done. :)

ROM Hacking Discussion / Pixel Artist Wanted
« on: February 03, 2011, 06:16:17 pm »
I've got a project in the works, but the catch is all the text is stored as graphics. I'm in the process of lining up a translator and getting a few other things in order, but the most important thing I need is someone who can take the translations and redraw them so they fit in the game both in space and look. There isn't a lot of text. If anyone's interested post up or shoot me a PM. I'd really rather not say what the project is publicly until it's far enough along that I know it'll be released for certain, i.e. I have a translator and artist on board.

Thanks. :)

Script Help and Language Discussion / Few strings.
« on: July 22, 2010, 10:58:02 pm »
//POINTER #36 @ $C88B8 - STRING #36 @ $C91A2

// UC 0122・・・[PAUSE]<$C0><$00>[CLEAR_TMAP]

// シャアの反乱からすでに[LINE]



//POINTER #37 @ $C88BA - STRING #37 @ $C924C

// 地球連邦政府はその政治[LINE]



//POINTER #38 @ $C88BC - STRING #38 @ $C92C8



//POINTER #39 @ $C88BE - STRING #39 @ $C938C




Just wanna check a few things. Anyone care to run through these real quick for me?

ROM Hacking Discussion / Cartographer
« on: December 29, 2008, 02:50:34 pm »

I've included a sample of how the dump by pointer and raw dump (like romjuice) methods work using FF1 as an example. I still need to write a few more examples, but I need to find games that I'm not actively working on to demonstrate the features on. Everything should be complete, but there may still be bugs, which is the whole point I'm posting this. Use it and report any bugs you find.

Pages: [1]