User ID: 150
Thread: KMP Expander - a MK7 KMP Editor
Author | Posted on 2015/12/16 |
CuriousTommy |
Hi Ermelber, I just wanted to say thank you for creating this wonderful tool. It made parts of my course now drivable. I do a few questions though. Would it be possible to have a checkbox that has the checkpoints always be shown no matter what tab you are currently on? It would make positioning enemy and item much more easier since I am freestyling my custom track and don't know where everything is going to be at the moment. Also does the Defragment Objects help with the white screen issues also or is it just to make the list look more neater? Thank you for taking your time to read this, CuriousTommy |
Author | Posted on 2015/12/19 |
CuriousTommy |
So I have been working on my custom track and have been making a good amount of progress. The best part it that I was able to get the course to load without crashing; however, with that being said, I am having issues with the glider and the lap counts. I used Rainbow Road as my template With the gliders, I was wondering if there is a way to set up the jump height of that glide. There is a youtube video in case if you didn't understand what I was trying to say. without holding the joystick up, I lose a lot of height. This gets more problematic when it comes to CPUs. since it seems like the CPUs never try to tilt upward. In case if video does not work The interesting thing with lap counts is that I can get the first and second lap to work (Remember this is Rainbow Road so it is split into sections), but I can not get the last lap to trigger, so I can't finish the course at all. In the end. I want to have this track be driven three times instead of splitting it into three section, but I want to fix this issue before I try to figure out how to do that. Thank you for taking the time to reading this message, CuriousTommy P.S. Keep in mind that this track is still a work in progress Here is a link to my Custom Track |
Author | Posted on 2015/12/19 |
CuriousTommy |
I fixed the Video Embed for you. Okay, I'll do that next time. |
Author | Posted on 2015/12/22 |
CuriousTommy |
I have been playing around with my custom track recently and made a good amount of changes recently. I came up with workarounds for the glider issue, so that is not an issue for me. I noticed that there is a positioning bug when I am in certain sections of my custom track. There are two video that demonstrate this issue: the character position bug & the race end position bug. I am not sure what I am doing wrong since it looks like I have everything set up properly on the kmp file. I am not sure if this bug is persistent with my recent modification, but I also noticed that using a blue shell will result with a game crash (it's not immediate though, it happens when the blue shell is about to hit the player in first place, but this only seems to happen when I attempt to finish the last lap. With the recent modifications I have made, I still have the lap issue problem, but this time, I removed the sections in the kmp and tried to make it into a 3 lap course, so the lap change never triggers. I also noticed that with the recent changes I have made, the CPU are having trouble with the mushroom jumps (I think the first one requires tricking in order to make it). Has anyone come up with a good solution for that? Here is a link to my updated Custom Track |
Author | Posted on 2016/01/01 |
CuriousTommy |
You probably have messed up the Key checkpoints. Comparing it to other Nintendo track, I can't tell what I am doing wrong. ID 0 always starts with Key 0 and between each key, there should be 255. I have it like this on the key checkpoints: 0 ... 225 ... 1 ... 225 ... 2 ... 225 ... 3 ... 225 ... 4 ... 225 Are there special rules for key checkpoints? By the way, if you set Glider Routes, you can make a "fixed" route I think by linking the KCL Value to the right Path. That's nice to know! I'll keep that in mind for the future. |
Author | Posted on 2016/01/19 |
CuriousTommy |
At first I couldn't figure out how the battle tracks handle the starting points, but then I looked at EveryFileExplorer and found out that the start points are at the KTPT section. It seems like KMP Expander can't edit or view KTPT. So I tried to use the old version, but I noticed that it doesn't give the option to export or import it as a CSV file. So I exported the raw binary, but I have no clue as to how to edit it a hex editor. I know that when an on a certain hex value the Float shows the x-coordinates, y-coordinates, or z-coordinates. But when I try to edit it, the number only changes a little and it is not the number that I want. Edit: Nevermind, I got an idea of how floats worked |
Author | Posted on 2016/01/29 |
CuriousTommy |
New version! Awesome! Do you plan to also add support for KTPT editing (In case if anyone is wondering, it is responsible for the starting positions for battle tracks)? |
Author | Posted on 2016/01/29 |
CuriousTommy |
Did you even try using the last 2 betas? Although I forgot to say I included KTPT, here it is: Wow... I feel so stupid... I wasted my time hex editing when I could of used the editor instead. |
Author | Posted on 2016/02/17 |
CuriousTommy |
I wasn't sure if putting this in the Mario Kart 7 help forum was appropriate considering that this would technically apply to any game that uses .sarc files. A quick back story: So I have been looking into how .sarc files and I was confused about how EveryFileExplorer was able to read 'unsafe' .sarc files since these files don't contain any filename strings until I found out that Gericom uses a premade .saht file. On to the question: Is the .saht a Nintendo file format, or something that Gericom just made up? Also, where did Gericom get the real string names? I actually have a working python code that analyses the file Just be sure to have the file be called HashTable.saht and put it in same directory as from struct import * FileIn = "HashTable.saht" SAHTFile = open(FileIn, mode = 'br', buffering = 0) SAHTHeader = unpack('<4s', SAHTFile.read(4)) SAHTFileSize = unpack(' SAHTDataOffset = unpack(' SAHTNrEntries = unpack(' print("The Header file is {0}.".format(SAHTHeader)) print("The File Size is {0}.".format(SAHTFileSize)) print("The Data Offset is {0}".format(SAHTDataOffset)) if SAHTNrEntries is 1: print("The Number Entry is {0}.".format(SAHTNrEntries)) else: print("The Number Entries are {0}".format(SAHTNrEntries)) print("") print("") for i in range(0,SAHTNrEntries): StartingPoint = SAHTFile.tell() SAHTHash = hex(unpack(' print("The Hash is {0}.".format(SAHTHash)) Buffer = unpack('<1s', SAHTFile.read(1)) SAHTString = b'' SAHTString += Buffer while Buffer != b'\\x00': # My idea behind this code is to keep unpacking the # Buffer until the Buffer hit a Null (or None in python) # value. Then the program would stop doing this. But, becuase # of how the code works, it also factors in a Null, however the if # statement catches this. Just keep this in mind when using .tell() Buffer = unpack('<1s', SAHTFile.read(1)) if Buffer != b'\\x00' and Buffer != b'/': SAHTString += Buffer elif Buffer == b'/': print("The fake 'directory' is {0}.".format(SAHTString)) Buffer = unpack('<1s', SAHTFile.read(1)) SAHTString = b'' if Buffer != b'\\x00': SAHTString += Buffer else: pass else: pass print("The file name is {0}.".format(SAHTString)) HitNullPoint = SAHTFile.tell() print("The actual range of data value is from {0} (Start at Hash Value) " "to {1} (First null value after string).".format(StartingPoint, HitNullPoint)) print("Actual relative cursor location {0}.".format(HitNullPoint - StartingPoint)) if (HitNullPoint - StartingPoint) % SAHTDataOffset == 0: pass else: NextHashPoint = SAHTDataOffset - ((HitNullPoint - StartingPoint) % SAHTDataOffset) print("The distance of bytes to the next hash is {0}.".format(NextHashPoint)) SAHTFile.seek(HitNullPoint + NextHashPoint) print("") |
Author | Posted on 2016/02/17 |
CuriousTommy |
I realised that the code doesn't show... Click me instead! |
Author | Posted on 2016/02/18 |
CuriousTommy |
SARC is a File Format made by Nintendo, I'm not sure about SAHT. Yeah, I am going to ask Gericom about that. And the real string names can be found by Hex Editing. Do you know what particular file I should look at? I know for a fact that it isn't in the .sarc course files. Looking that the documentation on 3dbrew, the real strings should be after the SFAT Header, but I don't see it in any of the .sarc courses files... |
Author | Posted on 2016/02/18 |
CuriousTommy |
It involved editing the UIMapPos Toad Stoll Was able to figure it out: Toad Stools quote You do need to use a hex editor though... |
Author | Posted on 2016/02/18 |
CuriousTommy |
@CuriousTommy Okay, thanks so much! I will also be sure to credit you. |
Author | Posted on 2016/02/18 |
CuriousTommy |
I don't think it has anything to do with UIMapPos, besides the positioning(?) Your right, to edit the actual images, you have to edit the map and map2 bclim files. I was only thinking about the position only when I replied. |
Author | Posted on 2016/03/18 |
CuriousTommy |
Nice tutorial. Now for your next challenge, figure out why in the hell does this KMP refuse to work? If you do or were able to solve the problem, would be mind telling us what you did if that is okay with you? |
Author | Posted on 2016/09/24 |
CuriousTommy |
Wonderful! Even though this is in its early stage, I can't wait for this to usable one day. May bring back my interest in making Mario Kart 7 custom tracks again! Sadly I can't do anything useful since I just started my computer science classes this quarter. On a side note, I thought GTK+ would make the app look foreign on a Mac (if someone were to implement it on mac), but seeing how gedit looks on mac, it may not be bad at all. Have you consider posting this on other sites like GBAtemp, so other people know about it? |
Author | Posted on 2016/09/25 |
CuriousTommy |
https://github.com/Ermelber/KMP-Tools I wasn't able to compile it successfully. It states that it could not find KMPSections.h. |
Author | Posted on 2016/11/02 |
CuriousTommy | MkGirlism, will your bcmdlgen tool support more stuff, such as texture animation or vertex colors (basically things that you can do in Nintendo's SDK that is not possible with EveryFileExplorer)? |
Author | Posted on 2017/05/10 |
CuriousTommy | It seems like interest had died. Are these programs actually canceled, or put on hold? |
Author | Posted on 2017/05/10 |
CuriousTommy |
Seeing that there was not update in either Miles Ermiiworth's or your github page for a while got me worried for a moment. I am glad to see that I am wrong. What is the program currently able to do? |
Author | Posted on 2017/06/16 |
CuriousTommy |
I was not sure how to word the title, but I have a question about the legal implications of using tools that include applications for Nintendo's proprietary SDK. Before I was playing around with SARC files using PabloMK7's SZS Generator, I found that this program has the SDK tool that generates SARC files. I have been messing around with the parameters and produced different files, both big endian and little endian with different options to understand how the format works. Based off of the exported files I generated with the SDK, I now have some knowledge as to how the format works. I wanted to make a program (as a summer project; mostly for fun) that extracts and creates SARC files, but I am worried that my exposure to the SDK tools may cause me legal issues if I were to release my tool to the public. I remember the situation with Brawl where people were relying on the Wii's SDK tools to create mods until Kryal released BrawlBox. Does anyone know how Keyal approached making BrawlBox since s/he said that the application is legal to use? |