Any Brigandine (PSX) fans?

#71
Hello. He graduated from the basic idea of ​​which is to carry out the program.
Example alpha version(first 1000 captures):
[Image: th_alpha_zpsc62fe925.jpg]
Finds all complete Pointers (left to do multi-threading, and it really is all looking 5-6 minutes - it's too long). I wanted to ask again about half Pointers. by what mechanism can retrieve them and be sure that it's him?).
PS By the way renamed the spell name "meteor rain" to "Ñ ‎Ã‘ƒÐ ‎´Ã ‎½Ã‘‹Ð ‎¹ Ð ‎´Ã ‎µÃ ‎½Ã‘Å’ (judgment day)" - sounds more gracefully as for me and both the Russian and close to the folklore within the meaning of angels and demons).

#72
I think changing "Meteor Doom" is a good idea. I changed the names "Wizard, Mage, Sorcerer". They all mean the same thing in English, so I used more distinct titles.

Unfortunately, there is no sure way to recognize half-pointers. They almost always end in "0x24", which is the CPU code that means "add this number to existing number". For example:
0x096CB8 [M.0x0A64B8]
* 00015C40 [B8648424]
Ã¥ ‎¹ ‎´
Years

Also, data in a Playstation executable is "aligned" in 4byte chunks. so the location of a pointer will always be a multiple of 4 (0x4, 0x8, 0xC, 0x0). For example:
0x096CB8 [M.0x0A64B8]
* 00015C40 [B8648424]
Ã¥ ‎¹ ‎´
Years

Also, pointers for related text will often be located near each other. For example:
0x096D28 [M.0x0A6528]
* 0003AA50 [28658424]
é˜ ‎²Ã¥ ‎¾ ‎¡Ã¥Å â€º
DEF

0x096D20 [M.0x0A6520]
* 0003AA28 [20658424]
æ” ‎»Ã¦â€™Æ’力
ATK

The only sure way to detect a half-pointer is to change it, then see if text in the game changes too.

Also note, some of BGE's text is located in OVER.BIN files. The OVER#.BIN files are cycled through RAM when their text is needed. OVER1.BIN has text for world-map. OVER2.BIN has text used during battles. OVER3.BIN has text used during "New Game" sequence etc. ‎  The OVER.BIN files are all loaded into RAM at 0xB6838 (I think). So the offset for their text is "location of text +0xB6838". ‎  So, if text is located at 0x6F4 in OVER3.BIIN, the pointer will read 0x6F4 + 0xB6838 = 0x0B6F2C. For example:

0x0006F4 [M.0x0B6F2C]
* 00009030 [2C6F0B80]
åŸ ‎ºÃ¦Å“ ‎¬Ã£ ‎ ‎¨Ã£ ‎ ‎ªÃ£â€šâ€¹Ã¦Ë† ‎¦Ã¨ ‎¡â€œÃ£â€šâ€™Ã¥ ‎­ ‎¦Ã£ ‎ ‎³Ã£ ‎ ‎¾Ã£ ‎â„¢Ã£â‚¬â€š
Learn basic tactics

Also, a few bits of text are in the EXE, but have their pointers in Over3.BIN:
Code:
0x096D68 [M.0x0A6568]
* 00002AD0 [68658424]
総マナ
Mana

0x096D70 [M.0x0A6570]
* 00002AB4 [70658424]
総拠点
Castles

0x096D78 [M.0x0A6578]
* 00002AEC [78658424]
総騎士
Knights

0x08DCE0 [M.0x09D4E0]
* 00002B14 [E0D48424]
総モンスター
Troops

0x096D80 [M.0x0A6580]
* 00002A70 [8065A524]
<%s>
%s (Brackets around country name

#73
Oh, sorry. Perhaps for this functionality of the program and then ends ... Biggrin
I will try to write a search function Pointer half.
I also will try to add the width of the text in the patcher it and patch the PSX EXE file can be automatically just by downloading BMP image with the font. As for the search Pointer it is perfectly all full of pointers. Is there a way to calculate the range in which to place the words with a full index? I then try to implement editing service through a program with automatic recalculation of the Pointer, etc. and etc..

#74
That is a handy tool!

Quote:Is there a way to calculate the range in which to place the words with a full index?
I do not know a way to calculate the range automatically.

#75
All right! We will bring the tool up to the beta)
I almost forgot! I wanted to ask about the length of the window for the text. In the utility is provided as a preview of the text in the game. A little later, adding the ability to specify the length of the text for correction, transfer. But where to look for these PSX EXE long or maybe you do a text file that lists the dimensions of the long windows?
PS forsena.org is dead?)

#76
Added feature to view half Pointers. What I've got doubts about its usefulness even looking at it thus bytes.


Attached Files Thumbnail(s)
   

#77
I don't know if Forsena.org will be back. It has gone down for a few days in the past.

Finding the location of the "window size" data requires Playstation assembly knowledge. Attached is my .asm file with locations for the text/windows I have moved for my translation.

Usually, 2 values are involved in moving text:
Distance from left side of screen (I call "LR")
Distance from top of screen (I call "UD")

When resizing windows, there are usually 4 values involved:
Distance from left side of screen
Distance from top of screen
Width of window
Height of window.

In a couple places, I had to edit the "source" graphic. The source is controlled by 2 values I call "Source Left" and "Source Top".


In my ASM file, the size values are attached to the CPU operation codes. A common entry will look like this:

.org 0x1D6D0
addiu r5,r0,0x3c ;"[status]" LR in battle unit menu
;addiu r5,r0,0x34

Green: location of setting in file
Red: The new alignment value
Blue: The original value
Purple: Note about what the value affects

You can edit these values manually rather than use ASM file:

EDIT: removed ASM


Attached Files Thumbnail(s)
   

#78
Smile Hello! Can you explain to me? The file "Russian Variable Width.asm" is the injection process or banalchanging the bytes at addresses through the cycle? I'm not good in commands mips Doh

#79
I am not sure I understand your question. ‎  The file "Russian Variable Width.asm" injects "CPU command codes" into EXE. The injected code looks up the width of each letter in a byte-table.

Are you trying to move text in the game menus?
[Image: ASMMove_zps267d97af.jpg]

Attached is a simplified .ASM file (Resize.zip).
To move text:
Open ‎  Resize.asm in Notepad++. Notepad++ changes text color depending on context, so it makes the ASM file easier to understand.

Locate the entry for the text you want to move. Descriptions will be shown in green, ‎  but not all text is listed in my ASM file.
[Image: ASMdescription_zps34a99f82.jpg]


Change the value after ".halfword" or ".byte". To move text or resize a window. Save the changed ASM file.
[Image: ASMvalue_zpsea90fdbe.jpg]


Put "Resize.asm", "Resize.bat", "armips.exe", "SLPS_026.61", "OVER1.BIN", "OVER2.BIN", and ‎  "OVER3.BIN" in a folder. Run "Resize.bat" to apply your changes.
[Image: Files_zpse594566c.jpg]

All the settings in the "Resize.asm" file are currently set to original values. That means they will not change the files (EXE etc) unless you edit a number.


Here is a description of the Armips functions used in this ASM file:
.psx (sets the "mode" for Playstation MIPS CPU. Armips also supports some Nintedo ARM CPUs)

.open (opens a file to be edited)
.close (closes a file that has been previously opened)

.org 0x1234 (sets the "write" location in the opened file)

.byte 0x11 (writes 1 byte at the current "write" location)
.halfword 0x1122 (writes 2 bytes at current "write" location. Reverses "endian" automatically.)
.word 0x11223344 (writes 4 bytes at current "write" location. Reverses "endian" automatically.)

EDIT: attachment removed. If someone wants a copy , send PM

#80
I'm very sorry. But perhaps I did not properly declare it unto. I'm trying to reproduce the work with bytes File "Russian Variable Width.asm" in this program.
[Image: th_2208201319-28-58_zps2890668c.jpg]
Can I do without Armipsto write a standalone patcher?





Users browsing this thread:
3 Guest(s)