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.

Messages - MeshGearFox

Pages: [1] 2
Just curious, but what's the Caravan Scene version you're not supposed to use? I've had a physical copy of MM3 for a while and it's definitely not that version judging from the checksums.

Removing the hitstun was the central point of this hack, since endlessly stunlocking enemies is really easy with most weapons and one of the things driving the lack of difficulty/undermining the enemy level boosts in Nightmare and No Future mode.

The only other changes I made here that I ended up agreeing with were increasing enemy walk speed and slowing the player's movement speed down, and I don't think those really matter much if hitstun's disabled.

The attack multiplier system I tried to come up with did not work how I intended it to.

If you want a harder version of LoM, try the Japanese version -- the level scaling was changed/bugged? in the US release so all of the enemies are underleveled, as far as I can tell. (The US version also introduced a number of other bugs, most of which don't really seem to be documented, none of which I have any idea how to address). ((Also, since the enemies aren't underleveled in the Japanese version, they do significantly-more-enough damage that abusing stunlock is a lot less safe when you're dealing with a group)).

The asm files aren't really well structured -- I was compiling those separately and then manually reinserting them into the decompressed data? program? files using a hex editor.

Also not sure if you're the person that PM'd me -- the notification email I got isn't showing me that for some reason >:T -- but the only special tool I used was

Sorry for the thread necromancy, but I just wanted to post out that this has had numerous updates (including one that was just submitted and should hopefully go through in the next 24 hours?) since release to resolve various crashes, translation issues, and to add keyboard movement in dungeons.

Third Book should be pretty doable -- the script has a lot of overlap with PotB, and it's stored in a resource file that I found a compressor/decompressor for (courtesy of some Korean guy whose name I don't, unfortunately, know!) So hopefully a huge chunk of the game could be knocked out quickly by just dumping PotB's script into the resource file, and then making the same hacks I did to PotB to expand the item description wnidow and change how text shadowing works.

I want to hold off on that for a bit, though, because I'm hoping some people actually play PotB and point out typos/mistranslations/etc., so that they can be fixed prior to porting the script over.

I should also point out that Degica's having a weekend sale, so Passage of the Book is half off at the time of writing (search on Artdink, though. Searching for Lunatic Dawn only turns up 1/2/3. Passage of the Book is the one with the kind of reddish thumbnail and is cheaper).

I put up a beta patch for Lunatic Dawn: Passage of the Book a few weeks ago ( and I'm currently doing some script revisions. While doing this, I've turned up a few lines that read kind of strangely, but where I don't understand the original Japanese well enough to rewrite them properly, and I'd like to get another pair of eyes to check these over.

Anyway, I put up a google doc here:

It should be user editable, so anyone can propose a translation. (Also make sure you note your username, so that I can give you proper credit!)

Currently there are 31 lines listed. I tried to note context if there was any, although a lot of this is just randomly selected NPC chatter with no real context at all, which is part of the reason I'm having trouble with it (there's a Rumors button on the Inn screen. Clicking it pulls up one of around 200 lines of random, context-free dialogue, or some more game event-specific rumors, which were already revised without issue).

I'll probably end up adding more as I go through more of the script files. I'll post to note any major additions.

(Also, I do want to note that the vast majority of Helly (the main translator's) lines were fine. A lot of these were things I tried translating myself prior to them joining the project!)

Well, I feel dumb now.

I was sticking the new code in the header section.

Stuffing it in the blank space between the .text and .data section makes everything work perfectly.

Thanks for the help :S

In this case, you probably want to test the hack. I'm not aware of any program specifically designed for this, but you can make your own. I suggest downloading something like WinSpy++ that can view and edit some visual properties of user controls.

If this is a game that doesn't have security measures and you are relatively competent in C/C++, I would suggest creating a DLL project in Visual Studio with your code changes. You can then use DLL injection to get your code into the game's address space and modify the game to call those functions. Cheat Engine has some support for runtime assembly modification and DLL injection, but I'm not sure if you can apply modifications permanently.
Every control is rendered using a default font (ie. GetStockObject(DEFAULT_GUI_FONT); ) unless you explicitly SendMessage a WM_SETFONT message. You would need the font handle or to use CreateFont to obtain a handle to use WM_SETFONT.

I'm running into another problem, the solution to which I'm thinking may be along these lines.

The game renders text by first drawing some shadow text in gray, and then drawing the regular black text one pixel behind that. The problem is, sometimes the shadow text is JUST past the point where the text wraps, and the normal text isn't, so this happens:

I found the instructions adding one to the text start position for drawing the shadow text, and then removing one for drawing the regular text. What I want to do is have another pair of instructions that add one to, and then subtract one from, the length in pixels at which the text wraps (to account for the shadow text being offset by one pixel).

Problem is, I don't have any space to add these extra instructions.

I tried putting my new code (original add/sub instructions, plus the new ones for changing the max line length) in some unused space in the executable, but jumping to those locations and trying to run code there gives me a C0000005 ACCESS_VIOLATION exception (which is... pretty much what I expected).

How would I go about adding new code to the program in a manner such that it will actually run?

(For what it's worth, I could also just set the shadow text to NOT have a on pixel offset, in which case the text has no shadow and there are, naturally, no issues with the shadow wrapping when the normal text doesn't. And I might end up doing this anyway because the shadow causes some really gross kerning issues, even in the original Japanese.

This is more just me wanting to sate my curiosity :S).

In the screenshot, there's an apostrophe after the first substring. This is actually the kanji for country, rendering incorrectly.

Replacing this kanji with a pair of spaces fixed the tab issue. Not really sure WHY, since adding two spaces to the substring itself didn't.

So I... guess this resolved itself? Somehow?

In any case, the DLL injection advice was really useful and I'll definitely look into that approach if this starts happening again.

It's my recollection that you need to use Windows messages, SEND or POST, to achieve this in a listbox control. I think I remember doing it that way, when the .NET wrapper didn't have a mechanism for tabs for some project I was dinking around with. The .NET folks have been working really hard. But they haven't gotten all of the old Win32 API features rolled over into .NET properties and methods, yet. Would be nice if they got it all done, because Microsoft is really pushing people hard against using Win32 API. But then they leave things out, or make the performance a lot worse, in .NET and this pushes people back into using the API despite all their work and hopes. Look up LB_SETTABSTOPS.

EDIT: Ah, here's the page.


So I found some VB source code that looks like it does what you're talking about:

As I don't have access to the actual source code for the game I'm hacking, how might I go about dropping in code to send the LB_SETTABSTOPS message via a hex editor/disassembler/whatever?


Also, another question. Changing the font on a resource in Resource Hacker doesn't actually change the font on that resource. I'm suspecting that it's inheriting the font that it actually uses either from some parent control or from. Any idea how to change the fonts, in light of this?

I'm working on a translation project for a 32-bit Windows game that uses standard Windows GUI resources for... nearly everything. Anyway, I'm having a problem with text alignment in ListBox resources that automatically expand tab characters. Refer to the below screenshot:

The name substring on the left and the 10000G substring are aligned on every row in the original Japanese, but when converted to English, the Iltal' name substring is short enough that it doesn't push the 10000G substring on its line over to the next tab position, I guess, so the text gets out of alignment.

Any suggestions on how to approach getting the text aligned properly? I can't find anything in Resource Hacker for setting tab positions, and it sounds like if you were, say, doing this in C# you'd pass a message to the control after it was already created (

(For instance, could I find whatever code creates the ListBox resource and find something that pushes the default tabstop positions somewhere in the assembly? Could I swap the ListBox out for a different control that DOES give me more control over tab positions (The MSDN article mentions ListViews) and have the game load the text into that? etc.)


Personal Projects / Re: Linda Cube Again English Translation
« on: May 12, 2016, 06:00:09 pm »
Hey, just curious, but anyone know what the differences are between the PCE and PSX version's scripts are? I found a script for the PCE version online and the first bit looks really similar, with the exception of button prompts being changed.


Is there any way to get IDA to export a list of all memory addresses where data is stored? If not I guess I could just dump a .lst file and write something to extract the data memory addresses for me (assuming all of them start with one of the db/dw/dd/etc. instructions).

I have a Windows 95 executable with a block of text starting at position 00125FE8, and I want to find the pointers to this so I can update them to point at some other text. I used IDA to look up the pointers, but that got me wondering how you would go about doing it manually, from looking at the executable in a hex editor.

What I understand is that I want to start by adding 400000 to the base address, giving me 00525GE8, and then reverse the bytes, giving me E85F5200.

Searching for E85F5200 through the executable using the hex editor gives me six results -- one at position 000DBEB2, and five more starting position 001ADD2C.

As per IDA, the ones after 001ADD2C are pointers arranged in some null-delimited array thing with other pointers, whereas the hit at 000DBEB2 is actually a CALL opcode E8 with some argument after it. Obviously I don't want to change /that/.

What I'm wondering is how someone -- or IDA, for that matter -- would tell that the first one isn't a pointer. I noticed, for instance, that the actual pointers were all located after the data that they were pointing to. Is stuff like that relevant?

ROM Hacking Discussion / Re: Windows GUI text hacking.
« on: January 12, 2015, 12:00:44 am »
That worked perfectly. Thank you *so* much.

ROM Hacking Discussion / Windows GUI text hacking.
« on: January 11, 2015, 09:43:43 pm »
Got Lunatic Dawn: Passage of the Book on steam and poked around the main executable with a hex editor to see if I could glue some English to it.

1. Window titles are stored in plain SHIFT-JIS encoded strings.

2. Button labels and the contents of dropdown menus are not showing up in the hex editor anywhere. I don't see any external data files for text, though, and these are generic Windows GUI elements which I don't think usually draw from outside data anyway.

So yeah, is the button label/dropdown text encrypted/compressed or something, and if so, any idea on how I could actually modify it?

For what it's worth, I'm thinking this was probably written in C or C++ -- it predates .NET's wider adoption.

Newcomer's Board / Re: Donations
« on: July 27, 2014, 09:20:20 pm »
Do you mean like kidneys?

Do they have to be human kidneys?

Would there be anything unsafe about just changing the first lui to 8004 instead, though?

This is what I have in my source code:

lui t8, 0x8003
lw t8, 0xe414(t8)

This is what it got turned into after I assembled it, according to no$psx:

lui t8, 0x8003
lw t8, -0x1BEC(t8)

What's going on here? That latter one ends up pointing to 8002E414. Are all offsets going to be treated as negative, meaning I'd need to five 0x8004 in the lui instructions..?

Also I'm using armips as my assembler if that matters.

I couldn't find a way to speed up enemy attack animations so I had to compensate by:

1. Reducing player movement speed.
2. Doubling enemy movement speed.

Ideally, while you're moving slower, the game should feel more 'active' since you'll need to be doing something constantly to not get surrounded. Is the latest stable version, if anyone's interested.

I've had some people point out that a lot of the plunge attacks are unbalanced and spammable now so I'm working on having the ST bar limit how many of those you can use -- basically, the plunge attacks costs ST now, and quick attacks gain ST.

I'm also trying to make the player an enemy hitboxes a little larger programmatically, so that enemies have an easier time hitting the player and vice versa -- I know the narrow collision's something that bothered people a lot.

As a side effect of reducing player movement speed, it's actually a little easier to hit enemies now anyway, since you don't overshoot them.

Started working on the movement code.

From what I can tell, the game calculates the new player position, repositions them, and then animates them moving to that point.

Wondering if this is how other enemy actions work -- if there's some set action/attack length value, and then the animation is timed to that.

Pages: [1] 2