Register | Login
Views: 19364387
Main | Memberlist | Active users | ACS | Commons | Calendar | Online users
Ranks | FAQ | Color Chart | Photo album | IRC Chat
11-02-05 12:59 PM
Acmlm's Board - I2 Archive - - Posts by Parasyte
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
User Post
Parasyte

Bullet Bill
Level: 35

Posts: 462/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-22-05 11:14 PM, in Easier version of Luigi's Adventure! omgomGOMG!!!!!1 Link
ROMs unlocked with RLM have been playable since v1.0. v1.1 and v1.2 only fixed bugs with the overworld; the bug fixed in v1.1 made hacked overworlds playable; the bug fixed in v1.2 made the overworld 'editable' in Lunar Magic.

peter_ac, I would advise against that. If it's not your hack, it's not your hack. And you don't deserve credit for it. ;o
Parasyte

Bullet Bill
Level: 35

Posts: 463/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-23-05 03:28 AM, in Latest DemoWorld Ory Link
Originally posted by Kyouji Craw
Well yeah. If someone released a tool to unlock hacks that actually was two stolen programs, neither of which unlocked hacks, what would you say?

Exactly.


My, my. Did he really do such a thing? I was really only aware of his IPS patch releases which were supposed to unlock hacks, but instead they only corrupted the ROM. Fake unlocking methods aside, I am also aware of his attempts to write an SPC editor. The only thing any of us heard about it was that he needed to rewrite it. I guess after claiming it needs to be rewritten twice, after showing only a silly screenshot from the Visual Basic form editor, it doesn't take a bloodhound to smell the BS.
Parasyte

Bullet Bill
Level: 35

Posts: 464/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-24-05 12:54 AM, in Geiger's Snes9x Debugger Mark 9 Link
You should probably ensure you have the *full release* and not the *update* that Geiger linked to. Like so: http://geigercount.net/crypt/snes9x1.43.ep9r8.7z
Parasyte

Bullet Bill
Level: 35

Posts: 465/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-24-05 12:57 AM, in Latest DemoWorld Ory Link
The only thing I could find was a broken image link. So unless some one still has it cached (for whatever reason) it's probably long gone.
Parasyte

Bullet Bill
Level: 35

Posts: 466/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-24-05 12:58 AM, in RLM v1.2 Link
smwedit, you have completely missed the point. You are mixing terms, and just generally quite confused. Feel free to continue re-reading my last post until you understand.
Parasyte

Bullet Bill
Level: 35

Posts: 467/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-24-05 10:42 PM, in Zelda: Link's Awakening question (deals with sprite arrangement) Link
When I said that I "found out how to do it" I also mentioned that there were problems with the sprite flipping after applying those patches. I don't know which version of the ROM you have, and since there are 3 available, it's pretty important to make sure you use the right version when applying such patches. Either get the v1.2 ROM (and I will tell you where to find it, on IRC) or tell me the version you are working with, so I can make these patches for it.
Parasyte

Bullet Bill
Level: 35

Posts: 468/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-25-05 03:35 AM, in Zelda: Link's Awakening question (deals with sprite arrangement) Link
For the DX ROM, you can apply those same patches like so:

0008135E: 00
00081535: 20
00081558: 00

Don't say I didn't warn you about the tile flipping thing. :\
Parasyte

Bullet Bill
Level: 35

Posts: 469/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-26-05 01:27 PM, in Allright. Im ready to learn ASM. Link
I suppose the only "correction" could be made to the following:
... go somewhere else in the program if the value now in the accumulator is zero.


This isn't entirely true, since it implies that the BEQ instruction works by checking the value in the accumulator. What's actually happening, of course, is the BEQ is checking the status of the Z-flag in the Processor Status Register. As any good 6502 manual will tell you, the [preceding] LDA instruction will set the Z-flag if the value loaded is zero.
Keep in mind that conditional branches check certain flags in the Processor Status Register, and most other instructions will set certain flags in the Processor Status Register, depending usually on the "result" of the operation. As mentioned earlier, the 6502 reference explains which instructions set which flags, and how/why. ;D

Just trying to avoid confusion...
Parasyte

Bullet Bill
Level: 35

Posts: 470/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-27-05 03:15 AM, in I need a resource editor! Link
"ROMBank" appears to be undeclared (unless it's global? Odd...)
As for running a string over into another array, what the hell? That has to be one of the worst ideas I've ever heard from you. Just use a pointer to point into the array. Like so:

char x[64] = "Text: "; //be sure to allocate enough memory
char *y = &x[6];


Then you can strcpy(y, ...) or whatever all you want!


OH! Forgot to reply to the stdarg question. To use stdarg, first include the header. (obviously)
Then not so obviously, use the va_ macros to define where the variable arg list begins, and how to use them. Since you plan to 'extend' the capability of printf(), you can just use vprintf() along with the va_ macros:

void myprintf(int myextension, char *fmt, ...) {
va_list list;

va_start(list, fmt);
printf("%d. ", myextenion);
vprintf(fmt, list);
va_end(list);
}


Something to that effect. To break this function down: a va_list is declared, named 'list'. The va_start macro is issued, passing the list, along with the very last argument to the function. This will set up the variable arg list to point to whatever arguments are referenced after that last arg. Therefore, it is critical to always use the LAST arg to the function when using the va_start macro.
Then vprintf() is called, which works like printf() with the exception that the variable args are passed as a va_list, rather than actual args. Then the list is cleaned with the issue of the va_end macro.

And finally, whatever extended args you want included in the function can be added right to the beginning. In this example, I made an integer named myextention, which is simply printed before the "fmt" (formatted) text. There's no real purpose for that, it's just an example.


(edited by Parasyte on 04-26-05 10:33 AM)
(edited by Parasyte on 04-26-05 10:36 AM)
Parasyte

Bullet Bill
Level: 35

Posts: 471/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-27-05 03:46 AM, in A few C/++ Questions Link
Bookmark this link immediately: Individual Control Information. This is probably going to be the link you will use most on MSDN. (And always use the MSDN Library. It's important to note the Library because HyperHacker didn't link directly to it. Though he probably should have.)

The Individual Control Information page will tell you how to control all aspects of any control (window) in your program. Whether it's a button, check box, listbox, combo box, edit box, scroll bar, etc. That page has everything related to controls. And to help you imagine what HyperHacker ment by "all controls are windows" you can look up some of the Window manipulation function on MSDN, such as MoveWindow() -- which you can use to move and resize your main window or dialog, as well as any control window on it.
For more information on Dialog Boxes and Windows: MSDN Windowing.

Finally, when you ask for "a major resource with C functions" you're actually asking about the standard C libraries. Because, you see, the C language does not contain any functions at all; All functions are a product of the C language. However, most compilers come packed with standard libraries for your C programs to make use of. And for a list of the standard libs, you can try (one of my favourite resources) The Cplusplus.com STD Lib reference. Just be sure to steer clear of the iostream stuff, and stick with the links under "C standard library".


(edited by Parasyte on 04-26-05 10:52 AM)
(edited by Parasyte on 04-26-05 10:53 AM)
Parasyte

Bullet Bill
Level: 35

Posts: 472/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-27-05 04:00 AM, in Geiger's Snes9x Debugger Mark 9 Link
The "Next Instruction" button actually displays the *current* instruction. But really the whole idea of discussing this button and it's use can get messy.
You see, the emulator stops execution after one instruction has finished executing, and before the next instruction will execute. Effectively, this makes the "next" instruction that of the "current" instruction, due to being stopped in between two instructions. Therefore, "next", in this context does not mean "the instruction following the current instruction" but "the next instruction which will be executed"... Which also happens to be the current instruction!

Now if THAT doesn't confuse you, I don't know what will!
Parasyte

Bullet Bill
Level: 35

Posts: 473/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-28-05 06:21 AM, in Geiger's Snes9x Debugger Mark 9 Link
Hello! Thanks for the clarification. Now that I can see what's happening, my explanation is not very relevant to the situation. When you push the "Skip" button, this is what it prints:

$00/8894 D0 FB BNE $FB [$8891] A:BBAA X:00E0 Y:0000 P:eNvmxdIzC$00/8896 E2 20 SEP #$20 A:BBAA X:00E0 Y:0000 P:eNvmxdIzC
Note that it's displaying two instructions on a single line. This is probably what is happening; you're not seeing the SEP instruction because it's printed off-screen, and you must scroll the edit box to the right to see it. This turns out to be a genuine bug. But a simple work-around is expanding your debugger window so you can see these 'badly printed' instructions.
Parasyte

Bullet Bill
Level: 35

Posts: 474/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-28-05 06:39 AM, in Question about 65816 structure Link
The JSR/JSL instruction is what does the pushing. The flow of these instructions works something like this:
1) Push return_address - 1
2) Jump to subroutine

The "return_address - 1" is just how the CPU works. When the RTS/RTL is executed to return, the flow goes something like this:
1) Pop return_address
2) Jump to return_address + 1

To pass arguments to subroutines, the registers are simply loaded with the arg values. When the regs are not enough to hold all args, the zero page (or direct page, for you 65816 buffs) is used. Args are almost never pushed to the stack on 65816, mainly because it's stupid, and Intel should die for coming up with such stupidness.

Now uhh, I haven't any idea what you are attempting accomplish, but it may help to remind you that the beginning of a subroutine is referenced directly by the calls (JSR/JSL/JMP/JML) to it. Quite often, you can also find the start of a subroutine simply by locating the first RTS/RTL/JMP/JML above the routine you're working with. So long as no preceding branches skip over the 'exit instruction' you find, it's quite safe to assume that the instruction following that 'exit instruction' is the beginning of your subroutine. Some times you may find some data poked between subroutines, but of course, it's almost always a trivial process (for a human) to decide what's code and what's data.
Now then, it's also interesting to note that most SNES games are, indeed, written in some mid-level language at the least. Probably somewhere between assembly and C.
For example, Virtual Boy development (which was started a good 5 years after the SNES' release) was done almost exclusively in assembly, but the assembler had an advanced macro structure to help ease the writing of code. Some particularly worthy examples of the macro structure included IF-THEN-ELSE statements rather than compare-branch-compare-branch, and several macros to deal with subroutine args and the like. This, in effect, is the "mid-level" language I was refering to.
Parasyte

Bullet Bill
Level: 35

Posts: 475/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-28-05 02:05 PM, in I need a resource editor! Link
Disch seems to have covered all of your problems, there.
One thing I'd like to point out: Though drawing 32-bit bitmaps using 32-bit writes is much faster than drawing 24-bit bitmaps using 8-bit writes, it is still very important to note that the actual rendering speed is completely left up to GDI. GDI will have to do color-depth convertions if the bitmap's color depth does not match the desktop. Whatever the case, 32-bit and 8-bit bitmaps tend to be the fastest for GDI to render. And if you will not use more than 256 colors, I highly recommend using 8-bit, instead.


(edited by Parasyte on 04-27-05 09:07 PM)
Parasyte

Bullet Bill
Level: 35

Posts: 476/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-28-05 02:45 PM, in Question about 65816 structure Link
So, you're talking about something like WinGraph32? I've never actually used tools like this. And they may have some unique purposes, I'm sure. I just haven't found any practical use, yet. In all honesty, these types of things don't tell you a whole lot about the program. It just shows you which routines call which other routines. Sounds more like a gimmick than a useful tool!
Earlier today, I was interested in writing a multi-pass disassembler for 65816. So I may spend a few minutes working on that tomorrow. The ultimate goal, of course, would be to intelligently seperate code from data to get the end result as close to the original source code as [automatically] possible. It would take Tracer's SEP/REP tracing idea one step further, and put it somewhere between that and bbitmaster's CDL feature in FCEUXD. Something similar to Snowbro's REV. (I believe that's the name. It's a 6502/NES disassembler which uses the same idea.)


(edited by Parasyte on 04-27-05 09:45 PM)
Parasyte

Bullet Bill
Level: 35

Posts: 477/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-29-05 07:08 AM, in I need a resource editor! Link
8-bit bitmaps use a colour table. The color table is an array of RGBQUADs, so you can still use your 15-bit colors with it. I believe GBC can only display 56 colors at once (without funky scanline effects).

However, now that you mention this is an emualtor, I recommend using something like SDL, rather than GDI. GDI will be far too slow.
Parasyte

Bullet Bill
Level: 35

Posts: 478/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-29-05 07:15 AM, in Question about 65816 structure Link
In my quite honest opinion, that level of reverse engineering is for doing things like source code recovery. You won't find too many situations in ROM hacking that require that amount of work. For most things, a single breakpoint will suffice.
If you're interested in rewriting large portions of the game, such tools may have some interesting uses.
Parasyte

Bullet Bill
Level: 35

Posts: 479/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-29-05 07:18 AM, in Labels for Tototeks Super Flash Cartridge... Link
I'd be interested in a label for Tototek's Genesis/Mega Drive flash cart (and throw in a 32x version!). That's the only Tototek flash cart I own. ;P
Parasyte

Bullet Bill
Level: 35

Posts: 480/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-29-05 07:21 AM, in Geiger's Snes9x Debugger Mark 9 Link
Ditto. Kirby's Dream Course works fine.
Parasyte

Bullet Bill
Level: 35

Posts: 481/514
EXP: 267348
For next: 12588

Since: 05-25-04

Since last post: 104 days
Last activity: 32 days
Posted on 04-30-05 02:20 PM, in I need a resource editor! Link
Visualboy Advance can be set to use GDI. If you try it, you'll see how much slower it is compared to DirectX.
For SDL, all you need to "install" is a dll. Either place it in the directory with the SDL-reliant executable, or in your Windows System directory. Just standard dll stuff, there. For more info, check out the website: http://www.libsdl.org/

Your problem with window sizing can be solved by using AdjustWindowRectEx() before calling CreateWindowEx().

Finally, you are writing the colors backwards (BEHOLD! THE CURSE OF LITTLE ENDIAN!)
When you group the RGB color components into a 32-bit word, you must do so as in the following example:

u32 color;
color = (blue << 24);
color |= (green << 16);
color |= (red << 8);

You could also use the RGB() macro, which tends to make much more sense:
u32 color = RGB(red, green, blue);



(edited by Parasyte on 04-29-05 09:21 PM)
Pages: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
Acmlm's Board - I2 Archive - - Posts by Parasyte


ABII


AcmlmBoard vl.ol (11-01-05)
© 2000-2005 Acmlm, Emuz, et al



Page rendered in 0.024 seconds.