mirror of
https://github.com/Kaisaan/lostkefin.git
synced 2025-06-18 16:45:40 -04:00
Add files
This commit is contained in:
parent
6847b8a39b
commit
efec93b5f3
1
dump.bat
1
dump.bat
@ -1,3 +1,4 @@
|
||||
perl scripts\abcde\abcde.pl -cm abcde::Cartographer "extracted\DATA.BIN" datacommands.txt "scripts\dump" -m
|
||||
perl scripts\abcde\abcde.pl -cm abcde::Cartographer "extracted\DATA.BIN" datacommands.txt "scripts\dump" -s
|
||||
|
||||
@pause
|
63
kefin.tbl
63
kefin.tbl
@ -1,4 +1,5 @@
|
||||
0A=[LINE]\n
|
||||
@main
|
||||
|
||||
20=
|
||||
21=!
|
||||
22="
|
||||
@ -10,7 +11,7 @@
|
||||
2B=+
|
||||
2D=-
|
||||
2E=.
|
||||
!2F=</>,2
|
||||
|
||||
30=0
|
||||
31=1
|
||||
32=2
|
||||
@ -22,7 +23,7 @@
|
||||
38=8
|
||||
39=9
|
||||
3A=:
|
||||
3B=;
|
||||
|
||||
3C={
|
||||
3D==
|
||||
3E=}
|
||||
@ -136,7 +137,7 @@ A5=・
|
||||
81A2=△
|
||||
81A3=▲
|
||||
81A4=▽
|
||||
81A5=▼
|
||||
|
||||
81A6=※
|
||||
81A8=→
|
||||
81A9=←
|
||||
@ -1624,56 +1625,16 @@ E6D2=贅
|
||||
E748=踪
|
||||
E84A=鍮
|
||||
|
||||
FFFD=[WAIT]\n
|
||||
0A=[LINE]\n
|
||||
|
||||
!2F=</>,2
|
||||
|
||||
38FF=[IDK1]\n
|
||||
B0FF=[IDK2]\n
|
||||
B4FF=[IDK3]\n
|
||||
CEFF=[IDK4]\n
|
||||
ECFF=[IDK5]\n
|
||||
9CFF=[IDK6]\n
|
||||
10FF=[IDK7]\n
|
||||
F6FF=[IDK8]\n
|
||||
C4FF=[IDK9]\n
|
||||
A6FF=[IDKA]\n
|
||||
88FF=[IDKB]\n
|
||||
D8FF=[IDKC]\n
|
||||
B5FF=[IDKD]\n
|
||||
E2FF=[IDKE]\n
|
||||
60FF=[IDKF]\n
|
||||
F8FF=[IDKG]\n
|
||||
A1FF=[IDKH]\n
|
||||
B1FF=[IDKI]\n
|
||||
1FFF=[IDKJ]\n
|
||||
FBFF=[IDKK]\n
|
||||
15FF=[IDKL]\n
|
||||
!3B=<[CHAR]>,2
|
||||
|
||||
47FF=[idkG]\n
|
||||
4CFF=[idkL]\n
|
||||
58FF=[idkX]\n
|
||||
42FF=[idkB]\n
|
||||
6FFF=[idko]\n
|
||||
44FF=[idkD]\n
|
||||
51FF=[idkQ]\n
|
||||
6AFF=[idkj]\n
|
||||
57FF=[idkW]\n
|
||||
!FFFD=<[PAUSE]>,1
|
||||
|
||||
/01FF=[END01]\n
|
||||
/02FF=[END02]\n
|
||||
/04FF=[END04]\n
|
||||
/06FF=[END06]\n
|
||||
/07FF=[END07]\n
|
||||
/11FF=[END11]\n
|
||||
/32FF=[END32]\n
|
||||
/4EFF=[END4E]\n
|
||||
/55FF=[END55]\n
|
||||
#56FF=[END56]\n
|
||||
/64FF=[END64]\n
|
||||
#A5FF=[ENDA5]\n
|
||||
81A5=[WAIT]\n
|
||||
|
||||
/000000FF=[ENDa]\n
|
||||
/0000FF=[ENDb]\n
|
||||
/00FF=[ENDc]\n
|
||||
80=[LEN]
|
||||
|
||||
/FF=[ENDFF]
|
||||
/FF=[END]\n
|
||||
|
56
notes.txt
56
notes.txt
@ -20,6 +20,11 @@ $00F69E00 has the value $01B08660
|
||||
loading text is at $0025FD30
|
||||
$0A is newline
|
||||
|
||||
DATA0.bin
|
||||
filenames start at 0x24BE90 (0x34BE10)
|
||||
pointer info is at 0x187A40 and ends at 0x18E7C0 (0x28E740)
|
||||
|
||||
|
||||
stage00.bin
|
||||
5A 00 5B 14 01 3A 02 $6005
|
||||
|
||||
@ -270,6 +275,8 @@ f53cd0
|
||||
|
||||
loading screen text is at 0x0025FD30 -> 0x0035FCB0 in exe
|
||||
|
||||
$2638D0 ($363850) has a table of names (character box names?)
|
||||
$2298E0 ($00329860) has a pointer to these names
|
||||
|
||||
graphics file format
|
||||
8h: Header starts with NAXA5010
|
||||
@ -307,6 +314,55 @@ FUN_0017b900 checks for save data with link option
|
||||
|
||||
stage90.bin has the text for the titlescreen cutscene
|
||||
|
||||
38FF=[IDK1]\n
|
||||
B0FF=[IDK2]\n
|
||||
B4FF=[IDK3]\n
|
||||
CEFF=[IDK4]\n
|
||||
ECFF=[IDK5]\n
|
||||
9CFF=[IDK6]\n
|
||||
10FF=[IDK7]\n
|
||||
F6FF=[IDK8]\n
|
||||
C4FF=[IDK9]\n
|
||||
A6FF=[IDKA]\n
|
||||
88FF=[IDKB]\n
|
||||
D8FF=[IDKC]\n
|
||||
B5FF=[IDKD]\n
|
||||
E2FF=[IDKE]\n
|
||||
60FF=[IDKF]\n
|
||||
F8FF=[IDKG]\n
|
||||
A1FF=[IDKH]\n
|
||||
B1FF=[IDKI]\n
|
||||
1FFF=[IDKJ]\n
|
||||
FBFF=[IDKK]\n
|
||||
15FF=[IDKL]\n
|
||||
|
||||
47FF=[idkG]\n
|
||||
4CFF=[idkL]\n
|
||||
58FF=[idkX]\n
|
||||
42FF=[idkB]\n
|
||||
6FFF=[idko]\n
|
||||
44FF=[idkD]\n
|
||||
51FF=[idkQ]\n
|
||||
6AFF=[idkj]\n
|
||||
57FF=[idkW]\n
|
||||
|
||||
/01FF=[END01]\n
|
||||
/02FF=[END02]\n
|
||||
/04FF=[END04]\n
|
||||
/06FF=[END06]\n
|
||||
/07FF=[END07]\n
|
||||
/11FF=[END11]\n
|
||||
/32FF=[END32]\n
|
||||
/4EFF=[END4E]\n
|
||||
/55FF=[END55]\n
|
||||
#56FF=[END56]\n
|
||||
/64FF=[END64]\n
|
||||
#A5FF=[ENDA5]\n
|
||||
|
||||
/000000FF=[ENDa]\n
|
||||
/0000FF=[ENDb]\n
|
||||
/00FF=[ENDc]\n
|
||||
|
||||
cartographer stuff
|
||||
|
||||
#BLOCK NAME:stage00.bin
|
||||
|
27
patch.asm
27
patch.asm
@ -1,11 +1,14 @@
|
||||
.erroronwarning on
|
||||
.erroronwarning off
|
||||
|
||||
.ps2
|
||||
|
||||
.open "extracted/DATA.BIN", "DATA.BIN", 0x0
|
||||
|
||||
.loadtable "kefin.tbl", "SJIS"
|
||||
.loadtable "kefinold.tbl", "SJIS"
|
||||
|
||||
.orga 0x094BA800
|
||||
.dw 0x5A, 0x00, 0x5B, 0x14, 0x01, 0x3A, 0x02, 0x0560
|
||||
/*
|
||||
.orga 0x094BC858
|
||||
|
||||
.db 0x3A, 0x80
|
||||
@ -17,16 +20,34 @@
|
||||
.strn "The City of Sand and Mirages", 0x81, 0x43, "Kefin?\n"
|
||||
.strn "Apparently it used to be a magnificent kingdom.[WAIT]", 0x19, "<K0>"
|
||||
.db 0x2F, 0x03, 0x00, 0x0A, 0x50, 0x00, 0x96, 0x00, 0x89, 0x80
|
||||
*/
|
||||
|
||||
.orga 0x094BD0B2
|
||||
.db 0x00, 0x3B, 0xC7, 0x01
|
||||
|
||||
.orga 0x094BD0EE
|
||||
.db 0x00, 0x3B, 0xC6, 0x01
|
||||
|
||||
.close
|
||||
|
||||
.open "extracted/SLPM_663.60", "SLPM_663.60", 0x0
|
||||
|
||||
.orga 0x0025FD45
|
||||
.strn "KaisaanTest", 0x81, 0xA5
|
||||
|
||||
.strn "KaisaanTest", 0x81, 0x43
|
||||
.orga 0x0025FE70
|
||||
.strn "Ys 3 Data found"
|
||||
|
||||
.orga 0x0025FEB0
|
||||
.strn "No Ys 3 Data"
|
||||
|
||||
.orga 0x00260B70
|
||||
.strn "Ys 3 Data search"
|
||||
|
||||
.orga 0x2638D8
|
||||
.strn "Adol", 0x00, 0x00
|
||||
|
||||
.orga 0x2638E0
|
||||
.strn "Dogi"
|
||||
|
||||
.close
|
50
pointer.py
Normal file
50
pointer.py
Normal file
@ -0,0 +1,50 @@
|
||||
slpm = open("extracted/SLPM_663.60", "rb")
|
||||
|
||||
def pointer(address):
|
||||
|
||||
ptrsize = 0x4
|
||||
ptr = 0x0
|
||||
invalid = [0, 1]
|
||||
trueptr = 0x0
|
||||
baseptr = 0xFFF80
|
||||
readsize = 32
|
||||
terminator = "\x00"
|
||||
text = ""
|
||||
|
||||
slpm.seek(address)
|
||||
ptr = slpm.read(ptrsize)
|
||||
ptr = int.from_bytes(ptr, "little")
|
||||
|
||||
if ptr in invalid:
|
||||
return "invalid"
|
||||
|
||||
trueptr = ptr - baseptr
|
||||
|
||||
slpm.seek(trueptr)
|
||||
text = slpm.read(readsize)
|
||||
text = text.decode(encoding="shift-jis", errors="backslashreplace")
|
||||
text = text[:text.find(terminator)]
|
||||
|
||||
return f"address {address:X}\tvalue {ptr:X}\tpointer {trueptr:X}\ttext {text}"
|
||||
|
||||
|
||||
startptr = 0x2298E0
|
||||
read = startptr
|
||||
endptr = 0x229A00
|
||||
|
||||
index = 0x0
|
||||
|
||||
log = open("chars.txt", "w", encoding="shift-jis")
|
||||
log.write("Characters:\n")
|
||||
|
||||
while read < endptr:
|
||||
|
||||
print(f"{read:X}")
|
||||
if (pointer(read) == "invalid"):
|
||||
pass
|
||||
|
||||
else:
|
||||
log.write(f"{pointer(read)}\t{index:X}\n")
|
||||
|
||||
index += 0x1
|
||||
read += 0x4
|
Loading…
Reference in New Issue
Block a user