Forums > Jitter

Getting started, porting c++ Star Fox Decoder. Opinions would be appreciated.

March 7, 2014 | 3:44 pm

Hello all!
I’ve had MAX MSP with Jitter and Gen for about a year and only now can I start learning them. I have a background in c++ and built this about a year ago with a bit of help:

I would like to start my learning by porting something I already understand how to do even if I have to learn much more to understand it inside MAX.
The application in the video was coded with openFrameworks and it meant having to load the binary files (the rom), parse certain portions of it in hex, having to flip hex values and do all kinds of things in order to extract coordinates and sprite info.

Is there something similar to this around here? or maybe a specific tutorial you think I should check? I really don’t know and google search doesn’t help much.
Hope you enjoy the nostalgic video.


March 7, 2014 | 8:57 pm

Hey, first of all this is quite awesome. Then, i’m not sure what you need to learn. But that kind of operation (reading a binary, parsing/decoding the data from a weird file format, working with low level encoded information) is better done on a c or c++ level, so writing an external would be the route to go probably. But then again, what is it that you want to do and that you can’t ? Have you like no experience in Max at all ? This does not really seem like something trivial to do…


March 8, 2014 | 5:07 am

Hello Vichug.
I have no experience in MAX and I’ve been doing the tutorials for a few days. I had to learn c++ and openGL/GLSL in order to do public interactive installations but I’m very much into electronic music production so I’ll eventually get there (program synths, fx and stuff).
What you say and what it means is exactly what I don’t know. The source for the Star Fox decoder is somewhere in the internet as well as how to do it. The source code I made had to perform several steps sequence. By the way, the data inside that rom is not encrypted, it is just coded in a certain way, it doesn’t require hacking and can be done with a piece of paper. Also, the source code has lots of comments and info if anyone wants to take try it out.

What I remember was:
1-Boot up program.
2-Read binary file (rom).
3-Read certain location for all addresses, this means being able to read every individual value from the rom file inside the computers RAM (easily done in c++).
4-Decode info on all 3d models into arrays and vectors
5-Read a list of known header values (hex values in text file).

Other-Decode interleaved textures as 16 color palette from 8 bit hex values, side by side.

I know this is a big way to start but I understand the process and most importantly, I know the results of each step. I would like to learn more about MAX, how it can help in this process and how it will fail in doing so.

Thanks again, :P


March 8, 2014 | 8:16 am

ye, well, in Max, all of this wouldn’t be really easy. See, it’s not Max’s specialty to access a binary file, there is an object for that, but most of the procesisng can be hazardous. Plus, 3d models as arrays and vectors : from how i understand it, this is neihter Max’s specialty, you’d be better off directly formatting gl commands and sending that to jit.gl.sketch. You have the [filein] object, but then using that to parse bytes… it’s better to stay in c realm and do an external, that’s what i’d do. Well, you can do it in max, probably ; there are the [zl] objects for lists, the [sprintf] and [regexp] for strings. But there won’t be real loops, you’ll need [uzi] to do everything, it can be difficult logically. Then translating that into arrays and vectors commands for [jit.gl.sketch]…;that agian is not that evident. Probably creating an external to just decode the file and output jit.gl.sketch commands would be easier, with your background, but i’m not sure… i have no experiecne whatsoever with that kind of stuff…


March 8, 2014 | 8:23 am

Thank you very much for your detailed explanation, it is helping me understand what I can and cannot do here.
Thanks again. :D


Viewing 5 posts - 1 through 5 (of 5 total)