summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTreeki <treeki@gmail.com>2012-01-30 00:40:28 +0100
committerTreeki <treeki@gmail.com>2012-01-30 00:40:28 +0100
commit96bc2e0026a369ecf8598fb2168d0a4e02e9e1bd (patch)
tree75cad32a169d79f81c1adf1945d49c9b6fc3310b /tools
parent4d1cccfc209619919c2cae99fb5e58aa62b2bc64 (diff)
downloadkamek-96bc2e0026a369ecf8598fb2168d0a4e02e9e1bd.tar.gz
kamek-96bc2e0026a369ecf8598fb2168d0a4e02e9e1bd.zip
message boxes are now functional
Diffstat (limited to 'tools')
-rw-r--r--tools/msgbox_data.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/msgbox_data.py b/tools/msgbox_data.py
new file mode 100644
index 0000000..06eec2b
--- /dev/null
+++ b/tools/msgbox_data.py
@@ -0,0 +1,36 @@
+messages = [
+ # Message 0
+ (0x100, 'A Test Message',
+ 'This is a test message.\nWith some lines.\nAnd more lines.\nAnd a really long line to see if nw4r::lyt can handle wrapping or not...\nFinal line.'
+ ),
+ ]
+
+import struct, sys, os.path, codecs
+
+if len(sys.argv) > 1:
+ target = sys.argv[1]
+elif os.path.exists('/home/me/Games/Newer'):
+ target = '/home/me/Games/Newer/ISO/files/NewerRes/Messages.bin'
+else:
+ target = 'Messages.bin'
+
+messageCount = len(messages)
+
+stringOffset = (messageCount * 0xC) + 4
+infoStruct = struct.Struct('>III')
+
+headerData = bytearray(struct.pack('>I', messageCount))
+stringData = bytearray()
+
+for msgID, title, msg in messages:
+ titleOffset = stringOffset + len(stringData)
+ stringData += codecs.utf_16_be_encode(title)[0] + '\0\0'
+ msgOffset = stringOffset + len(stringData)
+ stringData += codecs.utf_16_be_encode(msg)[0] + '\0\0'
+
+ headerData += infoStruct.pack(msgID, titleOffset, msgOffset)
+
+with open(target, 'wb') as out:
+ out.write(headerData)
+ out.write(stringData)
+