- Group:
- Trial Member: Trial Members
- Active Posts:
- 30 (0.08 per day)
- Most Active In:
- Engineering & Reverse Engineering (3 posts)
- Joined:
- 06-July 14
- Profile Views:
- 1004
- Last Active:
Jul 19 2015 05:23 PM- Currently:
- Offline
My Information
- Age:
- Age Unknown
- Birthday:
- Birthday Unknown
- Gender:
-
Not Telling
Contact Information
- E-mail:
- Private
Previous Fields
- Project:
- Super Monkey Ball hacking!
- National Flag:
- None
Topics I've Started
-
I got bored, so here's a demo!
16 June 2015 - 12:50 PM
-
Building a compiler, need help!
15 June 2015 - 02:21 PM
I'm building a compiler for a very simple language I made, targeted towards MIPS32. The entry point is always 0xC00000, and free RAM is from 0x50000-0x6BFFFF. Unfortunately, I'm not doing so well. I've tried C, C#, recursive descent, shunting-yard, pretty much everything. I am to my wits end. Anyone that can help me would be appreciated. Here are the specifications:
Pseudocode to parse tokens (does it work?):
get token
if token is _inc, parse include file
if token is _def, define constant
if token is _iff/_els, generate the following for _iff ( a op b ) { c } _els { d }:
evaluate a in assembly
evaluate b in assembly
branch to end if ( a op b ) is false
{ c }
j end2
end
{ d }
end2
if token is _jmp, generate the following for _jmp label
j label
if token is _ret, generate the following for _ret { r }
evaluate r in assembly
addu $v0, $r0, r
jr $ra
nop
else
if line is function call, generate the following for foo ( arg1 , arg2 , ... , argn )
decrease stack pointer to allocate args
load args to stack
jal foo
nop
increase stack pointer by same amount
if line is assignment, generate the following for a = { b }
evaluate b in assembly
sw b, 0(&a)
All variables are 1 word (32 bits).
All variable names, function names, labels, and control words
are exactly 4 characters in length, labels must end in underscore.
Variables cannot be initialized in their declarations.
Only integer values accepted.
Control word list:
_inc _def _iff _els _jmp _ret
Valid operations:
+ - * / %
& | ^
<< >>
Comparisons:
== != < <= > >=
Unaries:
- (negation of constants) $ (value at address)
Example code segment (prni prints integer, no syscall used):
test.r:
================
varb
main ( )
{
varb = 4
prni ( varb )
}
================ -
Let's hack Super Monkey Ball!
14 June 2015 - 12:56 PM
This is my first attempt, where I found out that the collision wasn't quite right. I later found that the collision was in a separate file:


This is my attempt at vertex shading. Stages such as Master 2 use this:

This is my custom texture test. You can tell what it's a picture of:

I tried SMB2, the files were exactly the same:


I later edited the lz file (which is compressed). My first attempts crashed the game, but later attempts I placed some objects.

Note that none of these have the correct collision, or in the case of the last one, has no collision at all. And there you have it. Me hacking Super Monkey Ball!


Find My Content
Jul 19 2015 05:23 PM
Not Telling