Jump to content

Jason777

Member
  • Posts

    908
  • Joined

  • Last visited

  • Days Won

    26

Everything posted by Jason777

  1. Honestly, I think the purpose of life is merely for "the pursuit of happiness." However, the concept of happiness is different for many people. For people who do not do things which make them happy, they tend to lead very shallow depressing lives and question their existence. Chim Chimney Chim Chimney Chim Chim Charoo. I do what I like, and I like what I do.
  2. Is this an assembly hack on a disassembled actor which you then reassembled? Or did you just change bytes in an actor file based off some information you have?
  3. I would love you if you did Virtual ON..
  4. The patch affected data within the checksum area causing the emulator (PJ64) to read it as an entirely new ROM what the CRC was updated. You just have to go back re-adjust your settings for your specific emulator to play it like the Debug ROM.
  5. It wasn't meant to be taken as a negative comment I guess the ellipsis gave off that impression. It was just known that he did a lot of "Play As" mods so it just reminds me of that. Seriously, though, nice mod.
  6. The legacy of Flotonic continues... nice mod you got there.
  7. Jason777

    n64 polygon handling

    No it's because you need to reverse some of the faces. In SM64, the blue faces in sketchup are the ones that show and the white ones do not. For OoT it's the opposite.
  8. To me it was more like he took my comment on GML the wrong way as if I was saying it was a language made for idiots. Then challenged my knowledge with some code that he thought I would find difficult to understand as if to prove me wrong. The correct way to take my comment: the easier to understand, the better. Anyways, I had fun taking apart and analyzing that code bit by bit. No big deal at all.
  9. In the end it actually does something. He just added in a lot of unnecessary checks. As far as I can tell, he wanted it to execute regardless of whether or not the player was pressing a directional key (or any button for that matter). So if you think about it, he didn't need any checks to begin with.
  10. Alright, well I haven't gotten far enough into the tutorials and documentation to know all of the keyterms (barely on my second video for GML) but the terminology you're using seems obvious enough. I guess I'll take a shot. Also, Jesus, please use semi-colons at the end of each line of code that isn't proceeded by brackets-- it's good programming practice and let's people know where one line ends and another starts. Seriously, nearly 90% of my time looking at the code was spent fixing it up to a readable degree. Another thing, too many unnecessary brackets, bro. Anyways : // If you aren't pressing any directional key or if you're pressing any key (really, there doesn't even need to be a check as far as I can tell), it sets the objects XY speeds to zero and sets the global variable "animated" to false if not keyboard_check(vk_up) && not keyboard_check(vk_right) && not keyboard_check(vk_down) && not keyboard_check(vk_left) { vspeed = 0; hspeed = 0; global.animated = false; } if keyboard_check(vk_left) && keyboard_check(vk_right) { vspeed = 0; hspeed = 0; global.animated = false; } if keyboard_check(vk_up) && keyboard_check(vk_down) { vspeed = 0; hspeed = 0; global.animated = false; } // Check if object XY speed is 0 and if the object height is equal to Waluigi's height to set global variable "move" to false if vspeed = 0 && hspeed = 0 && height = obj_waluigi.height { global.move = false; } // A bunch of and XY distance checks (a range of +24 to -24 for both X and Y) between obj_waluigi and the current object to set XY speeds of the object if (obj_waluigi.y - y) > 24 { vspeed = 0; } if (obj_waluigi.y - y) < -24 { vspeed = 0; } if (obj_waluigi.x - x) > 24 { hspeed = 0; } if (obj_waluigi.x - x) < -24 { hspeed = 0; } // If global variable "talk" is equal to false... if global.talk = false { // If up is pressed, 90 degree rotation (counter-clockwise) movement for the object, and animate the sprite if keyboard_check(vk_up) && not keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_down) //up { ddirection = 1; global.animated = true; script_execute(move_up4); } // If up + right is pressed, 45 degree rotation (counter-clockwise) movement for the object and animate the sprite if keyboard_check(vk_up) && not keyboard_check(vk_left) && keyboard_check(vk_right) && not keyboard_check(vk_down) //up right { ddirection = 2; global.animated = true; script_execute(move_up3); script_execute(move_right3); } // If right is pressed, 0 degree rotation (counter-clockwise) movement for the object and animate the sprite if not keyboard_check(vk_down) && keyboard_check(vk_right) && not keyboard_check(vk_up) && not keyboard_check(vk_left) //right { ddirection = 3; global.animated = true; script_execute(move_right4); } // If down + right is pressed, 315 degree rotation (counter-clockwise) movement for the object and animate the sprite if keyboard_check(vk_down) && not keyboard_check(vk_left) && keyboard_check(vk_right) && not keyboard_check(vk_up) //down right { ddirection = 4; global.animated = true; script_execute(move_down3); script_execute(move_right3); } // If down + right is pressed, 270 degree rotation (counter-clockwise) movement for the object and animate the sprite if keyboard_check(vk_down) && not keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_up) //down { ddirection = 5; global.animated = true; script_execute(move_down4); } // If down + right is pressed, 225 degree rotation (counter-clockwise) movement for the object and animate the sprite if keyboard_check(vk_down) && keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_up) //down left { ddirection = 6; global.animated = true; script_execute(move_down3); script_execute(move_left3); } // If down + right is pressed, 180 degree rotation (counter-clockwise) movement for the object and animate the sprite if not keyboard_check(vk_down) && keyboard_check(vk_left) && not keyboard_check(vk_up) && not keyboard_check(vk_right) //left { ddirection = 7; global.animated = true; script_execute(move_left4); } // If down + right is pressed, 135 degree rotation (counter-clockwise) movement for the object and animate the sprite if keyboard_check(vk_up) && keyboard_check(vk_left) && not keyboard_check(vk_right) && not keyboard_check(vk_down) //up left { ddirection = 8; global.animated = true; script_execute(move_up3); script_execute(move_left3); } } And for the other part, I had a little more guesswork to do : // Checks if the square (pixel?) 4 units above the object is free... if place_free(x, (y - 4)) { // ...To allow the object to move move = true; // I have no idea what function "place_meeting" does, but I'll make an educated guess // Makes a series of checks to see whether or not there's a certain type of "block" object with a specific Z-axis range for each type of block in front of the currrent object to decide whether or not to exit if place_meeting(x, (y - 4), obj_hblock1) && z < 16 { exit; } if place_meeting(x, (y - 4), obj_hblock2) && z < 32 { exit; } if place_meeting(x, (y - 4), obj_hblock3) && z < 48 { exit; } if place_meeting(x, (y - 4), obj_hblock4) && z < 64 { exit; } // ...To make sure before it decreases the Y value of the object y += -4; } You're welcome. Redundancy is redundant. EDIT: I removed a bunch of brackets, added in semi-colons, and enclosed certain arithmetic in paranthesis to give a cleaner look. It should still compile exactly the same.
  11. Nah, he's talking about the same thing. It's just a vastly different version, though. Game Maker Studio is the newest Game Maker software developed by YoYo games that I believe allows you to develop games for Android, iOS, and maybe even Wii(?)... All other versions before it are sort of obsolete now and they've cut alot of things that used to be supported. Also, I think the prices can go up to $500 for the "Master Studio". However, I'm using a cracked version of the old Game Maker 8.1 that I downloaded today
  12. There are ways to patch that code. Z64Hook is a nice little convenient hook you can use to get those codes patched. The only thing you need to write is a little ASM/C hack and get it assembled/compiled. Here's what it would basically look like: .ORG 0x80600000 /* You need to write some code which checks if the four Links are loaded which I left it out because I don't really want to go through the trouble of thinking up a method to do so right now... Unless of course these codes can be used to on boot with no crashes. */ LUI K1, 0x8022 ORI AT, R0, 0x005C SB AT, 0x46FC(K1) LUI K1, 0x8023 ORI AT, R0, 0x0050 SB AT, 0x820C(K1) ORI AT, R0, 0x0095 SB AT, 0xBD1C(K1) Exit: OR AT, R0, R0 JR RA ORI K1, R0, 0x0AAA /* I cleared the two registers at the end because... I don't know, it feels right? Also, I don't even really need 2 registers to write this code; I just wanted to keep it short. */ Assemble as a binary and then follow the instructions of Z64Hook to figure it out from there. Z64Hook : http://spinout182.com/z64hook/
  13. So I took a look at some GML tutorials today... wow, GML is an outrageously noob-friendly language compared to everything else. I'm kind of tempted to see what I can get done with just knowledge I have now.
  14. Wow, I should really go back to Algebra II and PreCal to study matrices.. I've had Calculus II stuck in my head all year and it's a pain to bring back all that old knowledge
  15. Toonami is back?? Aw yeeah. Time to no-life it for a night!
  16. Now that is some sweet-ass info! Bookmarking this...
  17. Jason777

    ROM and RAM relation.

    I'm not sure if many people would approve... Well, the ones who have gotten into the area of hacking where these terms are used. One such example where the term "virtual address" is thrown all over the place is in information regarding actors and certain areas or code within the actor.
  18. Look it up. There's loads of information on this out there. There's even a tutorial on this website about it.
  19. Nice to see you started this back up, LeEpic. One thing you should take note of is that faces have to be white ("right click + reverse faces") for them to be visible or have collision.
  20. Damn, JSA... Nice info! Also, there's some more information regarding scene index values and animation in another thread that some of you guys might have forgotten about: http://www.the-gcn.com/topic/600-xdaniels-random-junk/page__st__60#entry10697
  21. Is this JSA's fix or did you optimize it a little bit? EDIT: Nevermind, I read the glitchkill topic
  22. Nice vid. Do you have the source code? Maybe I could add in a feature which allows you to inject to a specified offset in the ROM and clear the unused bytes at the old file offset.
  23. I would totally download Fragile Dreams if I could find a good english patch for the japanese version. Japanese voice dubs just always seem to be better.
  24. I should really update my tutorial and add on the assembly hacking section... DeathBasket, spinout, and sakura would be of great help to you. This topic is something that you probably won't get right away and it takes time to figure out how everything works. Here are some tips I offer you: Grab an assembler. I prefer to use Renegade64 and mips-gcc or mips-as. Learn the Opcodes, what they do, and their syntax. Have some knowledge of how bit-wise arithmetic works. You'll need it for tons of things. Know the importance and usage of all registers. Know how the CPU of the N64 works. Become acquainted with the OoT/MM RAM map and the structure of certain data types. Be comfortable with working with the stack pointer (register sp). It'll really help to start using an emulator with a decent debugger (nemu). Knowing the boundaries of signed and unsigned values is very important! It would do you go know the terminology used to describe numbers of bytes:---Byte : 0x01 byte (8 bits) ---Halfword : 0x02 bytes (16 bits) ---Word : 0x04 bytes (32 bits) ---Doubleword : 0x08 bytes (64 bits) Here are a few personal tips... Using a JAL (Jump and Link) will replace the value currently in register ra with an address to return to (like a function call). It's good to preserve any values contained in registers in the stack and restore them later. Make sure to update the stack when you're no longer using it. When making a function call, arguments beyond four (a0, a1, a2, a3) must be stored at stack + 0x10. Return values are stored in v0 and v1. Registers at, gp, and k1 are usually free to use after the game boots up. You don't have worry about preserving registers besides ra, all saved temporaries, and return values if you're code comes at the end of a function/routine (like right before a JR RA). If you're really stumped at how to write something in assembly, try coding it in C (it's easier hacking N64 games with C) and then look at the disassembly of the code afterwards to see how the compiler went and wrote it. Don't you dare forget about floating point numbers and the floating registers! You might want to take a look at my unfinished guide...: http://www.the-gcn.com/tutorials/article/4-ootmm-hacking-with-c-and-asm/ And there are a few example hacks written and C (and one incomplete ASM hack): http://www.the-gcn.com/topic/1262-jason777s-hack-ideas/ There's also another ASM hack I did: http://www.the-gcn.com/topic/1600-young-link-using-the-bow/
  25. Meh, I'll probably never release a patch for this. Instead I'll release the assembly source: Display list fix assembly code: Display list fix nemu cheat (probably need to fix the cheat number): ------------------------------------------------- Arrow spawn fix assembly code: Arrow spawn fix nemu cheat (probably need to fix the cheat number):
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.