Jul 18, 2010 at 11:41 PM
Join Date: Dec 26, 2007
Location: Lithuania
Posts: 1945
Are you implying I can have 203 face pics?Noxid said:also Face.pbm can extend at least far enough down to be ridiculously large so that should not be a problem.
Are you implying I can have 203 face pics?Noxid said:also Face.pbm can extend at least far enough down to be ridiculously large so that should not be a problem.
Yes. I believe you can.WoodenRat said:Are you implying I can have 203 face pics?
Yes you can extend tilesets, but again, keep the width the same.adark said:You can extend tilesets and the facepics?
Damnit, I need to pay more attention to this forum.
Also, could somebody PLEASE help me change the icon?
And find a complete list of all the entities in cave story and what they are called...
. Help please?Basically it fills EDX with 00's, or if EAX is negative, with FF's. Then it can perform operations with the register EDX:EAX, which is like a bit 64 bit number. This is mostly used for the IDIV command, which divides EDX:EAX by whatever you put in IDIV, and stores it to EAX I think.Landonpeanut said:I have an assembly concept that I've been having trouble grasping for some reason: CDQ. I've read the definition (The cdq instruction sign extends the 32 bit value in eax to 64 bits and places the result in edx:eax by copying bit 31 of eax throughout bits 0..31 of edx) over and over, but I've never been able understand it. Help please?
Question bump.adark said:The CE I have has no entities named, excluding the later ones with random characters, and it also doesn't have any TSC notes built in either.
New problem:
How do I edit what Flag needs to be set for entitiy flags 4000/800 to work?


Normally whatever value that is in EAX will be positive, so I think the compiler often just uses CDQ as a quicker and easier way to fill EDX with 00's. Chances are the code after the CDQ uses EDX, right?Landonpeanut said:It uses no IDIV after using the CDQ, instead it uses a SUB, and it's just a bit confusing.![]()
00406625 MOV DWORD PTR DS:[EDX+18],EAX ;Change X velocity to EAX
00406628 PUSH 4 ;Maximum #.
0040662A PUSH -4 ;Minimum #.
0040662C CALL 0040F350 ;Call the Random # generator function (stores into EAX)
00406631 ADD ESP,8 ;Fix the Stack.
00406634 SHL EAX,9 ;Multiply EAX by 2^9
00406637 CDQ ;Extends the 32 bit value in eax to 64 bits and places the result in edx:eax
00406638 SUB EAX,EDX ;Subtracts EDX from EAX
0040663A SAR EAX,1 ;Divide EAX bu 2^1
0040663C MOV ECX,DWORD PTR SS:[EBP+8] ;Store the Weapon pointer into ECX
0040663F MOV DWORD PTR DS:[ECX+1C],EAX ;Change Y velocity to EAX
That is odd...Landonpeanut said:Yep, it does.
Here you go:
It's part of the Bubbler lvl. 3 Launch code that I was looking at a while back....Code:00406625 MOV DWORD PTR DS:[EDX+18],EAX ;Change X velocity to EAX 00406628 PUSH 4 ;Maximum #. 0040662A PUSH -4 ;Minimum #. 0040662C CALL 0040F350 ;Call the Random # generator function (stores into EAX) 00406631 ADD ESP,8 ;Fix the Stack. 00406634 SHL EAX,9 ;Multiply EAX by 2^9 00406637 CDQ ;Extends the 32 bit value in eax to 64 bits and places the result in edx:eax 00406638 SUB EAX,EDX ;Subtracts EDX from EAX 0040663A SAR EAX,1 ;Divide EAX bu 2^1 0040663C MOV ECX,DWORD PTR SS:[EBP+8] ;Store the Weapon pointer into ECX 0040663F MOV DWORD PTR DS:[ECX+1C],EAX ;Change Y velocity to EAX
Okay, so this is sign extension with CDQ:Landonpeanut said:Yep, it does.
Here you go:
It's part of the Bubbler lvl. 3 Launch code that I was looking at a while back....Code:00406625 MOV DWORD PTR DS:[EDX+18],EAX ;Change X velocity to EAX 00406628 PUSH 4 ;Maximum #. 0040662A PUSH -4 ;Minimum #. 0040662C CALL 0040F350 ;Call the Random # generator function (stores into EAX) 00406631 ADD ESP,8 ;Fix the Stack. 00406634 SHL EAX,9 ;Multiply EAX by 2^9 00406637 CDQ ;Extends the 32 bit value in eax to 64 bits and places the result in edx:eax 00406638 SUB EAX,EDX ;Subtracts EDX from EAX 0040663A SAR EAX,1 ;Divide EAX bu 2^1 0040663C MOV ECX,DWORD PTR SS:[EBP+8] ;Store the Weapon pointer into ECX 0040663F MOV DWORD PTR DS:[ECX+1C],EAX ;Change Y velocity to EAX
PUSH 4
PUSH -4
CALL 0040F350 ;put random # into EAX
ADD ESP,8
SHL EAX,8 ;multiply EAX by 2^8
MOV ECX,DWORD PTR SS:[EBP+8]
MOV DWORD PTR DS:[ECX+1C],EAX ;Change Y velocity to EAX
00406628 PUSH 4
0040662A PUSH -4
0040662C CALL 0040F350
00406631 ADD ESP,8
00406634 SHL EAX,9
00406637 CDQ
00406638 SUB EAX,EDX
0040663A SAR EAX,1
0040663C MOV ECX,DWORD PTR SS:[EBP+8]
0040663F MOV DWORD PTR DS:[ECX+1C],EAX ;Change Y velocity to EAX
I thought it might result in that, since if you were to run the 2 extreme ends of that code (eax being 4 or negative 4) the result on the eax that is moved into the y-velocity is rather negligible (if it's negative, it adds 1 to the y-velocity, which does close to nothing). Unless the edx is used a bit after (it probably just has the weapon pointer stored to it later), then it seems like a pointless bit of code. Might just be an artifact of the compiler :SLandonpeanut said:No noticeable change in behavior. Interesting.


CE was fucking up my bg's too. It only shows the bg during the fade-in.Miles_Valentine said:I was tryign to make a new background for a throne room i was making, but it isnt working.I saved it as bkcast.pbm in the data folder. Cave editor displays it perfectly, but when i try to actually play it, the middle ground and foreground is displayed only. What am i doing wrong?
(Note that the files dimensions are multiples of 16)
