• Hey everyone happy Christmas Eve we're aware of what's happened with the source code so to keep this simple absolutely don't post it on the site or use it to make mods with (it's not particularly preferable toward this end anyway) and tread lightly in general until we see how this settles, thanks to all and have a great holiday season -DT
Noxid
Reaction score
0

Profile posts Postings Media Albums About

  • I tried making another new map. I copied the first events from my starting map and it froze on me. no gibberish this time, it just told me "Doukutsu has stopped working." and exited out. Now, I deleted a map I didn't need (one of the ones used for the credits I think...and made a NEW map at the same number (93), and BAM. it works no problem. I tried TRAing to the map #95, and the same error occured. I have no idea why, but apparently I can't go above number 94. :(
    I'm not sure WHAT caused the game to crash, but here's what I did.

    Coming from someone who can't draw (in real life AND on the computer), i took the lazy route and changed one of the 4 tiles that create a 2x2 block of skulls into a water block by using tileset editor. I used the bottom right block. Anyway, I made a VERY tall map, 100x20 or so...and made 9 or 10 rockets. I put the event for the rockets, and made the starting point in that room. I go to run the game...and got that gibberish error message.

    By typing that out for myself, I think I just realized the problem. Under settings:gamesettings you can tell the game what event to run on the starting map, and the event I have for my normal starting map didn't exist on the new one. GOD I'm an idiot :(((. Guess I'll try again tomarrow.
    you must've JUST missed my edit. Sry to waste your time. The second one worked. Thanks for the help.

    Random thing, I tried to make a room, and I put about 10 different rockets (the one on the plantation) entities. Above that, I changed one tile of the hell tileset to a water function, and made it cover the top of the map. The idea being, if you didn't choose the right one, you drowned because you couldn't really do anything once you'd chosen it. I go to the room, and I get an error. I tried removing the rocket entities, nope, didn't work. So I deleted the map. Could the problem lie in that my edited tileset that can't load in sue's workshop for some reason? I have a placeholder "Hell1" tileset that I change everything to in SW, then change it back for the actual game. I could only change the Hell1 tileset, because tileset editor couldn't load my modded hell tileset to change one tile to water...ugg.

    I have a new idea for an evil map, thanks to you teaching me (or at least telling me) about the <CMP command. Maybe in the days to come.....
    I had the skipflag in there so if they decided to go back there they wouldn't be trapped forever...The game glitches if you have the same item/weapon twice, and otherwise they couldn't advance. I don't know. Trying now...

    nope. STILL no music. no idea why. thanks for trying...

    EDIT: the SECOND ONE WORKED!!!

    Somehow, the SKIPFLAG was giving me trouble!

    Jeez, that must be the 3rd time in THIS SHORT MOD that skipflags have given me trouble. Thanks again!
    Hi. I need help with a script of mine, but I'm not sure what's wrong.

    When you obtain the "key of epicness", no music plays, even a <CMU0010 is right before the message. I switched things around, made the music it's own event, but nothing changed. Here's the current script, even though I don't think anything's wrong with it:

    0105
    <PRI<MSGHERE IT IS!!!<NOD
    THE KEY OF EPICNESS!<CLR<NOD<FL+0390<FL+0555<FL+1641<SKJ0025:0106<EVE0108

    #0106
    <TRA0068:0110:0039:0012<END

    #0107
    <GIT1001<IT+0001<MSGFound =Key of EPICNESS=!<FLA<WAI0160<TAM0002:0013:0000<FL+1644<FL+0303
    <SK+0025<EVE0106<END

    #0108
    <CMU0010<EVE0107

    Sorry to trouble you, though I'm at a standstill with this.
    *insert assembly is limitless spiel*
    I like diy-ing, it's sorta boring otherwise.
    and my code's really sloppy too, looky:
    0042F060 /$ 55 push ebp
    0042F061 |. 8BEC mov ebp,esp
    0042F063 |. 83EC 34 sub esp,34
    0042F066 |. C745 D0 00000 mov dword ptr ss:[local.12],0
    0042F06D |. C745 D4 20000 mov dword ptr ss:[local.11],30
    0042F074 |. C745 D8 10000 mov dword ptr ss:[local.10],10
    0042F07B |. C745 DC 30000 mov dword ptr ss:[local.9],40
    0042F082 |. C745 E0 10000 mov dword ptr ss:[local.8],10
    0042F089 |. C745 E4 20000 mov dword ptr ss:[local.7],30
    0042F090 |. C745 E8 20000 mov dword ptr ss:[local.6],20
    0042F097 |. C745 EC 30000 mov dword ptr ss:[local.5],40
    0042F09E |. C745 F0 20000 mov dword ptr ss:[local.4],20
    0042F0A5 |. C745 F4 20000 mov dword ptr ss:[local.3],30
    0042F0AC |. C745 F8 30000 mov dword ptr ss:[local.2],30
    0042F0B3 |. C745 FC 30000 mov dword ptr ss:[local.1],40
    0042F0BA |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F0BD |. 8378 78 00 cmp dword ptr ds:[eax+78],0
    0042F0C1 |. 75 2D jne short 0042F0F0
    0042F0C3 |. 68 00020000 push 200 ; /Arg2 = 200
    0042F0C8 |. 68 00FEFFFF push -200 ; |Arg1 = -200
    0042F0CD |. E8 7E02FEFF call 0040F350 ; \DoukutsuAgil36B.0040F350
    0042F0D2 |. 83C4 08 add esp,8
    0042F0D5 |. 8B4D 08 mov ecx,dword ptr ss:[arg.1]
    0042F0D8 |. 8941 10 mov dword ptr ds:[ecx+10],eax
    0042F0DB |. 6A 00 push 0 ; /Arg2 = 0
    0042F0DD |. 68 00F8FFFF push -800 ; |Arg1 = -800
    0042F0E2 |. E8 6902FEFF call 0040F350 ; \DoukutsuAgil36B.0040F350
    0042F0E7 |. 83C4 08 add esp,8
    0042F0EA |. 8B4D 08 mov ecx,dword ptr ss:[arg.1]
    0042F0ED |. 8941 14 mov dword ptr ds:[ecx+14],eax
    0042F0F0 |> 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F0F3 |. 8378 74 00 cmp dword ptr ds:[eax+74],0
    0042F0F7 |. 0F85 F3010000 jne 0042F2F0
    0042F0FD |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F100 |. 8B48 04 mov ecx,dword ptr ds:[eax+4]
    0042F103 |. 89CA mov edx,ecx
    0042F105 |. 83E2 04 and edx,00000004
    0042F108 |. 75 07 jne short 0042F111
    0042F10A |. 89CA mov edx,ecx
    0042F10C |. 83E2 10 and edx,00000010
    0042F10F |. 74 0F je short 0042F120
    0042F111 |> 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F114 |. 8B50 10 mov edx,dword ptr ds:[eax+10]
    0042F117 |. 6BD2 FF imul edx,edx,-1
    0042F11A |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F11D |. 8950 10 mov dword ptr ds:[eax+10],edx
    0042F120 |> 89CA mov edx,ecx
    0042F122 |. 83E2 02 and edx,00000002
    0042F125 |. 74 0F je short 0042F136
    0042F127 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F12A |. 8B50 14 mov edx,dword ptr ds:[eax+14]
    0042F12D |. 6BD2 FF imul edx,edx,-1
    0042F130 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F133 |. 8950 14 mov dword ptr ds:[eax+14],edx
    0042F136 |> 83E1 08 and ecx,00000008
    0042F139 |. 74 14 je short 0042F14F
    0042F13B |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F13E |. C740 74 01000 mov dword ptr ds:[eax+74],1
    0042F145 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F148 |. C740 68 00000 mov dword ptr ds:[eax+68],0
    0042F14F |> 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F152 |. 8340 78 01 add dword ptr ds:[eax+78],1
    0042F156 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F159 |. 8B48 68 mov ecx,dword ptr ds:[eax+68]
    0042F15C |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F15F |. 8378 10 00 cmp dword ptr ds:[eax+10],0
    0042F163 |. 7F 0C jg short 0042F171
    0042F165 |. 83C1 01 add ecx,1
    0042F168 |. 83F9 02 cmp ecx,2
    0042F16B |. 7E 02 jle short 0042F16F
    0042F16D |. 31C9 xor ecx,ecx
    0042F16F |> EB 10 jmp short 0042F181
    0042F171 |> 83E9 01 sub ecx,1
    0042F174 |. 83F9 00 cmp ecx,0
    0042F177 |. 7D 05 jge short 0042F17E
    0042F179 |. B9 02000000 mov ecx,2
    0042F17E |> 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F181 |> 8948 68 mov dword ptr ds:[eax+68],ecx
    0042F184 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F187 |. 8B48 14 mov ecx,dword ptr ds:[eax+14]
    0042F18A |. 83C1 30 add ecx,30
    0042F18D |. 81F9 FF040000 cmp ecx,4FF
    0042F193 |. 7C 05 jl short 0042F19A
    0042F195 |. B9 FF040000 mov ecx,4FF
    0042F19A |> 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F19D |. 8948 14 mov dword ptr ds:[eax+14],ecx
    0042F1A0 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F1A3 |. 0148 0C add dword ptr ds:[eax+0C],ecx
    0042F1A6 |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F1A9 |. 8B48 10 mov ecx,dword ptr ds:[eax+10]
    0042F1AC |. 8B45 08 mov eax,dword ptr ss:[arg.1]
    0042F1AF |. 0148 08 add dword ptr ds:[eax+8],ecx
    0042F1B2 \. E9 39010000 jmp 0042F2F0

    that's actually the neatest of the bunch, because the majority of the stuff I'm doing is rearranging the procedures, so you look at the hud, and it's a thousand relative jumps, going between and around and under each other.

    O.o
    I wish there was a program that made your code neater.
    would you mind if I sorta took your idea for the rolling npc?
    mine would bounce as well though.

    and what's this about a basic modding guide?
    Hey, I just noticed the mimiga with the purple hat in your profile. Is he for your mod too? Btw. I saw your basic modding guide. Although I knew that basic stuff, it was fun to read it and there were some good advice on planning too. Hope you will continue it.
    pah, leaders are for wamps.
    also, here's what little I have on weapons and collisions. furthermore, teh info you copied from meh on tsc is slightly off, you should make it
    To make a new command, find a command that you're not going to use - IThe most obvious choice for this would be a duplicate FAC command (at 424eaf), but if you want a larger command, you can cannibalize a command such as xx1.

    to find xx1, you would covert it's letters into ascii (so 58,58,51), and then search for a "mov e_x,[004A5AD8]". and then a cmp [e_x+1],58. What this is doing is comparing the first char of the read-in data with 58 (x). If it's not x, it jumps to the next command, and if it is x, it does another check, etcetera. What this code ends up looking like is:

    mov e_x,[004A5AD8]
    add e_x,[004A5AE0]
    movsx e_x,byte ptr [eax+0001]
    cmp e_x,__ ;Checks if the first letter is __
    jne next_command
    mov e_x,[004A5AD8]
    add e_x,[004A5AE0]
    movsx e_x,byte ptr [e_x+0002]
    cmp e_x,__ ;Second Letter
    jne next_command
    mov e_x,[004A5AD8]
    add e_x,[004A5AE0]
    movsx e_x,byte ptr [ecx+0003]
    cmp e_x,__ ;Thoid
    jne next_command

    So you'd look for something like this that cmps 58, then 58, then 3D.

    To make the command something else, you would just relace the ascii with other values, such as 4D, 4C, 3D (for ML=)

    (Code for xx1 isat 00425149 btw)

    To change the command itself, you simply need to look at the code after the intro check up until a jmp away. Here you just need general hax knowledge to make you're own command. Don't exceed the length given, but that's an obvious.

    the big-fart tsc commands are in two parts, the normal bit, which is in the parser, and then a subroutine, which is generally the last call in the tsc. you can go into the subroutine of a tsc event to write you're own code, too.

    probably the most important thing your tsc command needs is this ikkle bit of tagalong code that's either near the start or the end that looks like this:

    mov e_x,dword ptr ds:[4A5AE0]
    add e_x,(chars used up by your tsc command, one with no arguments would take up 4)
    mov dword ptr ds:[4A5AE0],e_x

    and this allows the parser to move on, and doesn't break the game.

    and a little bonus for you all, if you do this:

    425244: jmp 4252ac

    what this does is makes it so that if a tsc command doesn't exist, it treats it as text, instead of crashing.
    cool, right?
    there were a lot of things wrong, so I sorta redid it. :O

    and here are some more tsc-related offsets
    General:
    0x422510 - Parser Offset
    0x4225d5 - Galloping Triplets
    0x425770 - End of Parser
    0x421900 - ASCII to number

    Command Ini:
    0x4242dA - CMU
    0x422666 - LI+
    0x4227a3 - IT+
    0x422821 - IT-
    0x422893 - EQ+
    0x422907 - EQ-
    0x422c93 - UNI
    0x42314f - KEY
    0x4237e6 - YNJ
    0x424e28 - FAC
    0x424eaf - FAC(2)
    0x4251fc - ESC

    Command Subs:
    0x420ee0 - CMU
    0x419c60 - LI+
    0x419cb0 - ML+
    0x4012d0 - IT+
    0x401330 - IT-
    0x416c70 - EQ+
    *

    *(fac, esc, key, and others don't have subroutines)

    how goeth the mod?


    alsoalso, I took functions from your comfospendium and added them to my list, so you can presumably just copypatsa the lot.
    Yeah...Does that mean you chose the correct direction (left) in the first choice? I'll admit it was pretty evil, but did you like the message?

    Oh, and by the way, you were about halfway through the mod at that point.

    Imagine trying to get all the way back UP.....(cause that's what happens soon)
    pah, if you were actually addicted, you would know the phrase was "you're so addicted to the cave story forums that..."
    duh. :rolleyes:

    also, if you ever feel like updating your compendium, here's a dandy list of all the functions I've found/had a use for. (and some entity stuffs, as well)
    frickity fricking frick-frick.
    did not think that the gamers lounge counted.

    guess I get to be leet twice.
    Ah, I see. At first I thought they were acronyms (my first thought was that IDKFA meant "I don't know, fuck off" but that would be IDKFO, so I kept trying to think of something that it could mean).
    O.o I didn't know You already release it... :D and its been release the day after I gave the drawings... is it?
    any way sorry that I gave you a hard time finishing it :D
    Meh, kinda. I have some time, though.

    Sorry for not having anything up, what with finals in a few days.
  • Loading…
  • Loading…
  • Loading…
  • Loading…
Back
Top