mirror of
https://github.com/cave-story-randomizer/cave-story-randomizer
synced 2024-11-21 14:22:47 +00:00
increases stripper limit from 16 to 127
This commit is contained in:
parent
b5115d4d03
commit
5b6b353fff
|
@ -3,60 +3,41 @@ offset 40cf90
|
|||
#define
|
||||
count=EBP-4
|
||||
Strip_addr=0049D628
|
||||
Credit=49D620
|
||||
Credit.mode=49D620
|
||||
MAX_STRIP=7F
|
||||
size=50
|
||||
|
||||
Strip.flag=EAX
|
||||
Strip.x=EAX+4
|
||||
Strip.y=EAX+8
|
||||
Strip.cast=EAX+0C
|
||||
Strip.str=EAX+10
|
||||
#enddefine
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
push ecx
|
||||
|
||||
:ActionStripper
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
PUSH ECX
|
||||
MOV [count],0 // s = 0
|
||||
mov eax, [Strip_addr]
|
||||
mov edx, MAX_STRIP
|
||||
|
||||
MOV ECX,[Strip_addr] // ECX = *Strip
|
||||
#define
|
||||
Strip.flag=ECX
|
||||
Strip.x=ECX+4
|
||||
Strip.y=ECX+8
|
||||
Strip.cast=ECX+0C
|
||||
Strip.str=ECX+10
|
||||
#enddefine
|
||||
:$LL4@ActionStri
|
||||
test BYTE [Strip.flag], 80
|
||||
je :$LN5@ActionStri
|
||||
cmp [Credit.mode], 0
|
||||
je :$LN5@ActionStri
|
||||
|
||||
JMP :loop
|
||||
sub [Strip.y], 100
|
||||
|
||||
:increment
|
||||
MOV EAX,[count]
|
||||
ADD EAX,1
|
||||
MOV [count],EAX // s++
|
||||
:loop
|
||||
CMP [count],MAX_STRIP // s < MAX_STRIP
|
||||
JGE :end
|
||||
:$LN5@ActionStri
|
||||
cmp [Strip.y], -2000
|
||||
jg :$LN2@ActionStri
|
||||
|
||||
MOV EBX,[count]
|
||||
IMUL EBX,EBX,size // EBX = s * sizeof(STRIP)
|
||||
and [Strip.flag], 0
|
||||
|
||||
:move_up
|
||||
MOV EAX,[EBX+Strip.flag]
|
||||
AND EAX,00000080
|
||||
JE :remove_offscreen
|
||||
CMP [Credit],0
|
||||
JE :remove_offscreen
|
||||
:$LN2@ActionStri
|
||||
add eax, size
|
||||
sub edx, 1
|
||||
jne :$LL4@ActionStri
|
||||
|
||||
MOV EAX,[EBX+Strip.y]
|
||||
SUB EAX,100
|
||||
MOV [EBX+Strip.y],EAX
|
||||
|
||||
:remove_offscreen
|
||||
CMP [EBX+Strip.y],-2000
|
||||
JG :endloop
|
||||
|
||||
MOV [EBX+Strip.flag],0
|
||||
|
||||
:endloop
|
||||
JMP :increment
|
||||
:end
|
||||
MOV ESP,EBP
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
||||
leave
|
||||
retn
|
|
@ -8,18 +8,28 @@ Strip_addr=0049d628
|
|||
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
|
||||
PUSH 18
|
||||
PUSH 0
|
||||
PUSH 0049D610
|
||||
CALL 00480D30
|
||||
ADD ESP,0C
|
||||
|
||||
/*
|
||||
PUSH 500
|
||||
PUSH 0
|
||||
PUSH 0049D628
|
||||
CALL 00480D30
|
||||
ADD ESP,0C
|
||||
*/
|
||||
|
||||
PUSH size
|
||||
PUSH MAX_STRIP
|
||||
CALL 00487701
|
||||
ADD ESP,8
|
||||
MOV [Strip_addr],EAX
|
||||
|
||||
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
|
@ -4,4 +4,5 @@ LoadGenericDataMAX_STRIP.txt
|
|||
PutStripper.txt
|
||||
RestoreStripper.txt
|
||||
SetStripper.txt
|
||||
StartCreditScript.txt
|
||||
StartCreditScript.txt
|
||||
ReleaseCreditScript.txt
|
|
@ -1,120 +1,135 @@
|
|||
offset 40D010
|
||||
|
||||
#define
|
||||
count=EBP-14
|
||||
Strip_addr=0049D628
|
||||
Credit=49D620
|
||||
; Constants
|
||||
MAX_STRIP=7F
|
||||
MAX_STRIPx10=7f0
|
||||
size=50
|
||||
|
||||
; Locals
|
||||
ArrayPad=EBP-4
|
||||
rc_addr=EBP-14
|
||||
rc.left=EBP-14
|
||||
rc.right=EBP-0C
|
||||
rc.top=EBP-10
|
||||
rc.bottom=EBP-8
|
||||
|
||||
; References
|
||||
Strip_addr=0049D628
|
||||
Strip.flag=ecx
|
||||
Strip.x=ecx+4
|
||||
Strip.y=ecx+8
|
||||
Strip.cast=ecx+0c
|
||||
Strip.str=ecx+10
|
||||
grcFull=0048f92c
|
||||
|
||||
rc = EBP-10
|
||||
rcleft=EBP-10
|
||||
rcright=EBP-8
|
||||
rctop=EBP-0C
|
||||
rcbottom=EBP-4
|
||||
; Functions
|
||||
PutBitmap3=0040c3c0
|
||||
|
||||
DIV200=data 99 81 E2 FF 01 00 00 03 C2 C1 F8 09
|
||||
; Builtins
|
||||
___security_cookie=498b20
|
||||
__security_check_cookie=00480dc1
|
||||
#enddefine
|
||||
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
SUB ESP,14
|
||||
MOV [count],0 // s = 0
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
sub esp, 14 ; 00000018H
|
||||
|
||||
MOV ECX,[Strip_addr] //ECX = *Strip
|
||||
#define
|
||||
Strip.flag=ECX
|
||||
Strip.x=ECX+4
|
||||
Strip.y=ECX+8
|
||||
Strip.cast=ECX+0C
|
||||
Strip.str=ECX+10
|
||||
#enddefine
|
||||
JMP :loop
|
||||
push ebx
|
||||
push esi
|
||||
push edi
|
||||
; Line 92
|
||||
xor esi, esi
|
||||
xor edi, edi
|
||||
|
||||
:increment
|
||||
MOV EBX,[count]
|
||||
INC EBX
|
||||
MOV [count],EBX
|
||||
:loop
|
||||
CMP EBX,MAX_STRIP
|
||||
JGE :end
|
||||
:$LL4@PutStrippe
|
||||
; Line 94
|
||||
mov ecx, [Strip_addr]
|
||||
test BYTE [esi+Strip.flag], 80 ; 00000080H
|
||||
je :$LN2@PutStrippe
|
||||
; Line 97
|
||||
and [rc.left], 0
|
||||
mov [rc.right], 140 ; 00000140H
|
||||
mov [rc.top], edi
|
||||
lea eax, [edi+10]
|
||||
mov [rc.bottom], eax
|
||||
|
||||
IMUL EBX,EBX,size //EBX = s * sizeof(STRIP)
|
||||
; Line 102
|
||||
push 23 ; 00000023H
|
||||
|
||||
MOV EDX,[EBX+Strip.flag]
|
||||
AND EDX,00000080
|
||||
JE :increment
|
||||
lea eax, [rc_addr]
|
||||
push eax
|
||||
|
||||
//rects
|
||||
MOV [rcleft],0
|
||||
MOV [rcright],140
|
||||
MOV EAX,[count]
|
||||
SHL EAX,4
|
||||
MOV [rctop],EAX
|
||||
ADD EAX,10
|
||||
MOV [rcbottom],EAX
|
||||
mov ebx, 1ff ; 000001ffH
|
||||
mov eax, [esi+Strip.y]
|
||||
cdq
|
||||
and edx, ebx
|
||||
add eax, edx
|
||||
sar eax, 9
|
||||
push eax
|
||||
|
||||
//arg5 = SURFACE_ID_CREDIT_CAST
|
||||
PUSH 23
|
||||
//arg4 = &rc
|
||||
LEA EDX,[rc]
|
||||
PUSH EDX
|
||||
//arg3 = Strip[s].y / 0x200
|
||||
MOV EAX,[EBX+Strip.y]
|
||||
DIV200
|
||||
PUSH EAX
|
||||
//arg2 = Strip[s].x / 0x200
|
||||
MOV EAX,[EBX+Strip.x]
|
||||
DIV200
|
||||
PUSH EAX
|
||||
//arg1 = &grcFull
|
||||
PUSH grcFull
|
||||
//PutBitmap3()
|
||||
CALL 0040C3C0
|
||||
ADD ESP,14
|
||||
mov eax, [esi+Strip.x]
|
||||
cdq
|
||||
and edx, ebx
|
||||
add eax, edx
|
||||
sar eax, 9
|
||||
push eax
|
||||
|
||||
//rects
|
||||
MOV EAX,[EBX+Strip.cast]
|
||||
CDQ
|
||||
PUSH ECX
|
||||
MOV ECX,0D
|
||||
IDIV ECX
|
||||
POP ECX
|
||||
IMUL EDX,EDX,18
|
||||
MOV [rc.left],EDX
|
||||
ADD EDX,18
|
||||
MOV [rc.right],EDX
|
||||
IMUL EAX,EAX,18
|
||||
MOV [rc.top],EAX
|
||||
ADD EAX,18
|
||||
MOV [rc.bottom],EAX
|
||||
push grcFull
|
||||
|
||||
//arg5 = SURFACE_ID_CASTS
|
||||
PUSH 25
|
||||
//arg4 = &rc
|
||||
LEA EAX,[rc]
|
||||
PUSH EAX
|
||||
//arg3 = Strip[s].y / 0x200 - 8
|
||||
MOV EAX,[EBX+Strip.y]
|
||||
DIV200
|
||||
SUB EAX,8
|
||||
PUSH EAX
|
||||
//arg2 = Strip[s].x / 0x200 - 24
|
||||
MOV EAX,[EBX+Strip.x]
|
||||
DIV200
|
||||
SUB EAX,18
|
||||
PUSH EAX
|
||||
//arg1 = &grcFull
|
||||
PUSH grcFull
|
||||
//PutBitmap3()
|
||||
CALL 0040C3C0
|
||||
ADD ESP,14
|
||||
call PutBitmap3
|
||||
|
||||
JMP :increment
|
||||
; Line 110
|
||||
push 25 ; 00000025H
|
||||
|
||||
:end
|
||||
MOV ESP,EBP
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
||||
mov ecx, [Strip_addr]
|
||||
mov eax, [esi+Strip.cast]
|
||||
cdq
|
||||
mov ebx, 0d
|
||||
idiv ebx
|
||||
imul edx, edx, 18
|
||||
imul eax, eax, 18
|
||||
mov [rc.left], edx
|
||||
add edx, 18 ; 00000018H
|
||||
mov [rc.right], edx
|
||||
mov [rc.top], eax
|
||||
add eax, 18
|
||||
mov [rc.bottom], eax
|
||||
lea eax, [rc_addr]
|
||||
push eax
|
||||
|
||||
mov ebx, 1ff
|
||||
mov eax, [esi+Strip.y]
|
||||
cdq
|
||||
and edx, ebx
|
||||
add eax, edx
|
||||
sar eax, 9
|
||||
sub eax, 8
|
||||
push eax
|
||||
|
||||
mov eax, [esi+Strip.x]
|
||||
cdq
|
||||
and edx, ebx
|
||||
add eax, edx
|
||||
sar eax, 9
|
||||
sub eax, 18 ; 00000018H
|
||||
push eax
|
||||
|
||||
push grcFull
|
||||
|
||||
call PutBitmap3
|
||||
add esp, 28 ; 00000028H
|
||||
|
||||
:$LN2@PutStrippe
|
||||
; Line 92
|
||||
add edi, 10 ; 00000010H
|
||||
add esi, size ; 00000050H
|
||||
cmp edi, MAX_STRIPx10 ; 000007f0H
|
||||
jl :$LL4@PutStrippe
|
||||
|
||||
; Line 113
|
||||
pop edi
|
||||
pop esi
|
||||
pop ebx
|
||||
leave
|
||||
retn
|
32
cs-hacks/credits-optimzations/ReleaseCreditScript.txt
Normal file
32
cs-hacks/credits-optimzations/ReleaseCreditScript.txt
Normal file
|
@ -0,0 +1,32 @@
|
|||
offset 40d410
|
||||
|
||||
#define
|
||||
Credit.pData=49d614
|
||||
Strip=49d628
|
||||
_free=0048128b
|
||||
#enddefine
|
||||
|
||||
push ebp
|
||||
mov ebp,esp
|
||||
|
||||
mov eax, [Credit.pData]
|
||||
test eax, eax
|
||||
je :$LN2@ReleaseCre
|
||||
|
||||
push eax
|
||||
call _free
|
||||
pop ecx
|
||||
|
||||
and [Credit.pData], 0
|
||||
|
||||
:$LN2@ReleaseCre
|
||||
mov eax, [Strip]
|
||||
test eax, eax
|
||||
je :$LN3@ReleaseCre
|
||||
|
||||
push eax
|
||||
call _free
|
||||
pop ecx
|
||||
|
||||
:$LN3@ReleaseCre
|
||||
retn
|
|
@ -1,79 +1,83 @@
|
|||
offset 40d240
|
||||
|
||||
#define
|
||||
count=EBP-14
|
||||
Strip_addr=0049D628
|
||||
; Constants
|
||||
MAX_STRIPx10=7F0
|
||||
|
||||
; Locals
|
||||
ArrayPad = EBP-4
|
||||
rc_addr = EBP-14
|
||||
rc.left=EBP-14
|
||||
rc.right=EBP-0c
|
||||
rc.top=EBP-10
|
||||
rc.bottom=EBP-8
|
||||
|
||||
; References
|
||||
Credit=49D620
|
||||
MAX_STRIP=7F
|
||||
size=50
|
||||
Strip_addr=0049D628
|
||||
Strip.flag=0049D628
|
||||
Strip.x=0049D62C
|
||||
Strip.y=0049D630
|
||||
Strip.cast=0049D634
|
||||
Strip.str=0049D638
|
||||
|
||||
rc = EBP-10
|
||||
rcleft=EBP-10
|
||||
rcright=EBP-8
|
||||
rctop=EBP-0C
|
||||
rcbottom=EBP-4
|
||||
; Functions
|
||||
CortBox2=0040ca80
|
||||
PutText2=0040ceb0
|
||||
|
||||
; Builtins
|
||||
___security_cookie=498b20
|
||||
__security_check_cookie=00480dc1
|
||||
#enddefine
|
||||
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
SUB ESP,14
|
||||
MOV [count],0
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
sub esp, 14 ; 00000014H
|
||||
push esi
|
||||
push edi
|
||||
; Line 151
|
||||
xor edi, edi
|
||||
xor esi, esi
|
||||
:$LL4@RestoreStr
|
||||
; Line 153
|
||||
mov eax, [Strip_addr]
|
||||
test [edi+eax], 128 ; 00000080H
|
||||
je :$LN2@RestoreStr
|
||||
; Line 155
|
||||
and [rc.left], 0
|
||||
; Line 156
|
||||
mov [rc.right], 140 ; 00000140H
|
||||
; Line 157
|
||||
mov [rc.top], esi
|
||||
; Line 158
|
||||
lea eax, [esi+16]
|
||||
mov [rc.bottom], eax
|
||||
; Line 160
|
||||
push 23 ; 00000023H
|
||||
push 0
|
||||
lea eax, [rc_addr]
|
||||
push eax
|
||||
|
||||
MOV ECX,[Strip_addr] // ECX = *Strip
|
||||
#define
|
||||
Strip.flag=ECX
|
||||
Strip.x=ECX+4
|
||||
Strip.y=ECX+8
|
||||
Strip.cast=ECX+0C
|
||||
Strip.str=ECX+10
|
||||
#enddefine
|
||||
|
||||
JMP :loop
|
||||
|
||||
:increment
|
||||
MOV EAX,[count]
|
||||
INC EAX
|
||||
MOV [count],EAX
|
||||
:loop
|
||||
CMP [count],MAX_STRIP
|
||||
JGE :end
|
||||
|
||||
MOV EBX,[count]
|
||||
IMUL EBX,EBX,size
|
||||
|
||||
MOV EDX,[EBX+Strip.flag]
|
||||
AND EDX,00000080
|
||||
JE :increment
|
||||
|
||||
MOV [rcleft],0
|
||||
MOV [rcright],140
|
||||
MOV EAX,[count]
|
||||
SHL EAX,4
|
||||
MOV [rctop],EAX
|
||||
ADD EAX,10
|
||||
MOV [rcbottom],EAX
|
||||
|
||||
PUSH 23
|
||||
PUSH 0
|
||||
LEA EDX,[rc]
|
||||
PUSH EDX
|
||||
CALL 0040CA80
|
||||
ADD ESP,0C
|
||||
|
||||
PUSH 23
|
||||
PUSH 0FEFFFF
|
||||
LEA EAX,[EBX+Strip.str]
|
||||
PUSH EAX
|
||||
MOV EAX,[rctop]
|
||||
PUSH EAX
|
||||
PUSH 0
|
||||
CALL 0040CEB0
|
||||
ADD ESP,14
|
||||
|
||||
JMP :increment
|
||||
|
||||
:end
|
||||
MOV ESP,EBP
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
||||
call CortBox2
|
||||
; Line 161
|
||||
push 23 ; 00000023H
|
||||
push 00feffff ; 00feffffH
|
||||
mov eax, [Strip_addr]
|
||||
add eax, 10 ; 00000010H
|
||||
add eax, edi
|
||||
push eax
|
||||
push [rc.top]
|
||||
push 0
|
||||
call PutText2
|
||||
add esp, 20 ; 00000020H
|
||||
:$LN2@RestoreStr
|
||||
; Line 151
|
||||
add esi, 10 ; 00000010H
|
||||
add edi, 50 ; 00000050H
|
||||
cmp esi, MAX_STRIPx10 ; 000007f0H
|
||||
jl :$LL4@RestoreStr
|
||||
; Line 164
|
||||
pop edi
|
||||
pop esi
|
||||
leave
|
||||
retn
|
||||
|
|
|
@ -1,92 +1,116 @@
|
|||
offset 40d150
|
||||
|
||||
#define
|
||||
count=EBP-14
|
||||
Strip_addr=0049D628
|
||||
Credit=49D620
|
||||
; Constants
|
||||
MAX_STRIP=7F
|
||||
size=50
|
||||
|
||||
rc=EBP-10
|
||||
rcleft=EBP-10
|
||||
rcright=EBP-8
|
||||
rctop=EBP-14
|
||||
rcbottom=EBP-0C
|
||||
; Locals
|
||||
ArrayPad=EBP-4
|
||||
rc_addr=EBP-14
|
||||
rc.left=EBP-14
|
||||
rc.right=EBP-0C
|
||||
rc.top=EBP-10
|
||||
rc.bottom=EBP-8
|
||||
|
||||
; Arguments
|
||||
argx=EBP+8
|
||||
argy=EBP+0C
|
||||
argtext=EBP+10
|
||||
argcast=EBP+14
|
||||
|
||||
; References
|
||||
Strip_addr=0049D628
|
||||
Strip.flag=edx
|
||||
Strip.x=edx+4
|
||||
Strip.y=edx+8
|
||||
Strip.cast=edx+0c
|
||||
Strip.str=edx+10
|
||||
|
||||
; Functions
|
||||
CortBox2=0040ca80
|
||||
PutText2=0040ceb0
|
||||
|
||||
; Builtins
|
||||
___security_cookie=498b20
|
||||
__security_check_cookie=00480dc1
|
||||
_strcpy=00481100
|
||||
#enddefine
|
||||
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
SUB ESP,14
|
||||
MOV [count],0
|
||||
MOV ECX,[Strip_addr] //ECX = *Strip
|
||||
#define
|
||||
Strip.flag=ECX
|
||||
Strip.x=ECX+4
|
||||
Strip.y=ECX+8
|
||||
Strip.cast=ECX+0C
|
||||
Strip.str=ECX+10
|
||||
#enddefine
|
||||
JMP :loop
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
sub esp, 14 ; 00000014H
|
||||
mov eax, [___security_cookie]
|
||||
mov [ArrayPad], eax
|
||||
mov edx, [Strip_addr]
|
||||
mov eax, edx
|
||||
push esi
|
||||
push edi
|
||||
mov edi, [argtext]
|
||||
; Line 121
|
||||
xor esi, esi
|
||||
:$LL4@SetStrippe
|
||||
; Line 122
|
||||
test [eax], 80 ; 00000080H
|
||||
je :$LN13@SetStrippe
|
||||
; Line 121
|
||||
inc esi
|
||||
add eax, size ; 00000050H
|
||||
mov ecx, esi
|
||||
cmp esi, MAX_STRIP ; 0000007fH
|
||||
jl :$LL4@SetStrippe
|
||||
; Line 125
|
||||
cmp ecx, MAX_STRIP ; 0000007fH
|
||||
je :$LN1@SetStrippe
|
||||
:$LN13@SetStrippe
|
||||
; Line 129
|
||||
imul ecx, esi, size
|
||||
mov [ecx+Strip.flag], 80 ; 00000080H
|
||||
; Line 130
|
||||
mov eax, [argx]
|
||||
mov [ecx+Strip.x], eax
|
||||
; Line 131
|
||||
mov eax, [argy]
|
||||
mov [ecx+Strip.y], eax
|
||||
; Line 132
|
||||
mov eax, [argcast]
|
||||
mov [ecx+Strip.cast], eax
|
||||
; Line 133
|
||||
push edi
|
||||
lea eax, [Strip.str]
|
||||
add eax, ecx
|
||||
push eax
|
||||
call _strcpy
|
||||
; Line 136
|
||||
and [rc.left], 0
|
||||
; Line 137
|
||||
mov [rc.right], 140 ; 00000140H
|
||||
; Line 138
|
||||
shl esi, 4
|
||||
mov [rc.top], esi
|
||||
; Line 139
|
||||
lea eax, [esi+10]
|
||||
mov [rc.bottom], eax
|
||||
|
||||
:increment
|
||||
MOV EAX,[count]
|
||||
INC EAX
|
||||
MOV [count],EAX
|
||||
:loop
|
||||
MOV EBX,[count]
|
||||
IMUL EBX,EBX,size //EBC = s * sizeof(STRIP)
|
||||
CMP [count],MAX_STRIP
|
||||
JGE :break
|
||||
MOV EDX,[EBX+Strip.flag]
|
||||
AND EDX,00000080
|
||||
JNE :increment
|
||||
JMP :break
|
||||
|
||||
:break
|
||||
CMP [count],MAX_STRIP
|
||||
JNE :initcast
|
||||
JMP :end
|
||||
|
||||
:initcast
|
||||
MOV [EBX+Strip.flag],80
|
||||
MOV [EBX+Strip.x],[EBP+8]
|
||||
MOV [EBX+Strip.y],[EBP+0C]
|
||||
MOV [EBX+Strip.cast],[EBP+14]
|
||||
|
||||
MOV EAX,[EBP+10]
|
||||
PUSH EAX
|
||||
LEA EAX,[EBX+Strip.str]
|
||||
PUSH EAX
|
||||
CALL 00481100
|
||||
ADD ESP,8
|
||||
|
||||
MOV [rcleft],0
|
||||
MOV [rcright],140
|
||||
MOV EAX,[count]
|
||||
SHL EAX,4
|
||||
MOV [rctop],EAX
|
||||
ADD EAX,10
|
||||
MOV [rcbottom],EAX
|
||||
|
||||
PUSH 23
|
||||
PUSH 0
|
||||
LEA EDX,[rc]
|
||||
PUSH EDX
|
||||
CALL 0040CA80
|
||||
ADD ESP,0C
|
||||
|
||||
PUSH 23
|
||||
PUSH 0FEFFFF
|
||||
MOV EAX,[EBP+10]
|
||||
PUSH EAX
|
||||
MOV EAX,[rctop]
|
||||
PUSH EAX
|
||||
PUSH 0
|
||||
CALL 0040CEB0
|
||||
ADD ESP,14
|
||||
|
||||
:end
|
||||
MOV ESP,EBP
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
||||
; Line 141
|
||||
push 23 ; 00000023H
|
||||
push 0
|
||||
lea eax, [rc_addr]
|
||||
push eax
|
||||
call CortBox2
|
||||
; Line 142
|
||||
push 23 ; 00000023H
|
||||
push 00feffff ; 00feffffH
|
||||
push edi
|
||||
push [rc.top]
|
||||
push 0
|
||||
call PutText2
|
||||
add esp, 28 ; 00000028H
|
||||
:$LN1@SetStrippe
|
||||
; Line 143
|
||||
pop edi
|
||||
pop esi
|
||||
mov ecx, [ArrayPad]
|
||||
call __security_check_cookie
|
||||
leave
|
||||
retn
|
|
@ -1,12 +1,16 @@
|
|||
offset 40d440
|
||||
|
||||
#define
|
||||
Strip_addr=0049D628
|
||||
; Constants
|
||||
MAX_STRIP=7F
|
||||
sizeof=50
|
||||
fullsize=27b0 ; 0x50 * 0x7f
|
||||
|
||||
fp=EBP-4
|
||||
path=EBP-110
|
||||
; Locals
|
||||
path=EBP-108
|
||||
ArrayPad=EBP-4
|
||||
|
||||
; References
|
||||
Strip_addr=0049D628
|
||||
Credit.pData=49D614
|
||||
Credit.size=49d610
|
||||
Credit.offset=49d618
|
||||
|
@ -15,117 +19,132 @@ Credit.mode=49d620
|
|||
Illust.x=49d60c
|
||||
Illust.act_no=49d608
|
||||
grcGame.left=48f91c
|
||||
gDataPath=0049E220
|
||||
|
||||
; Functions
|
||||
GetFileSizeLong=00410d80
|
||||
EncryptionBinaryData2=004215c0
|
||||
ReloadBitmapFile=0040BFD0
|
||||
|
||||
; Builtins
|
||||
___security_cookie=498b20
|
||||
__security_check_cookie=00480dc1
|
||||
_malloc=004813a3
|
||||
_free=0048128B
|
||||
_memset=00480d30
|
||||
_sprintf=00481010
|
||||
_fopen=00480FFD
|
||||
_fread=00480f55
|
||||
|
||||
; Strings
|
||||
credit_script=48f918
|
||||
format=0048C374
|
||||
str_rb=0048C37C
|
||||
str_casts=0048c380
|
||||
#enddefine
|
||||
|
||||
PUSH EBP
|
||||
MOV EBP,ESP
|
||||
SUB ESP,110
|
||||
MOV EAX,[498B20]
|
||||
MOV [EBP-8],EAX
|
||||
push ebp
|
||||
mov ebp, esp
|
||||
sub esp, 108 ; 00000108H
|
||||
mov eax, [___security_cookie]
|
||||
mov [ArrayPad], eax
|
||||
; Line 241
|
||||
mov eax, [Credit.pData]
|
||||
push esi
|
||||
xor esi, esi
|
||||
push edi
|
||||
test eax, eax
|
||||
je :$LN2@StartCredi
|
||||
; Line 243
|
||||
push eax
|
||||
call _free
|
||||
pop ecx
|
||||
; Line 244
|
||||
mov [Credit.pData], esi
|
||||
|
||||
CMP [Credit.pData],0
|
||||
JE :openfile
|
||||
MOV EAX,[Credit.pData]
|
||||
PUSH EAX
|
||||
CALL 0048128B
|
||||
ADD ESP,4
|
||||
MOV [Credit.pData],0
|
||||
:$LN2@StartCredi
|
||||
; Line 248
|
||||
push [credit_script]
|
||||
lea eax, [path]
|
||||
push gDataPath
|
||||
push format
|
||||
push eax
|
||||
call _sprintf
|
||||
; Line 250
|
||||
lea eax, [path]
|
||||
push eax
|
||||
call GetFileSizeLong
|
||||
add esp, 14 ; 00000014H
|
||||
mov [Credit.size], eax
|
||||
; Line 251
|
||||
cmp eax, -1
|
||||
je :$LN8@StartCredi
|
||||
; Line 255
|
||||
push eax
|
||||
call _malloc
|
||||
mov [Credit.pData], eax
|
||||
pop ecx
|
||||
; Line 256
|
||||
test eax, eax
|
||||
je :$LN8@StartCredi
|
||||
; Line 259
|
||||
lea eax, [path]
|
||||
push str_rb
|
||||
push eax
|
||||
call _fopen
|
||||
pop ecx
|
||||
pop ecx
|
||||
; Line 260
|
||||
test eax, eax
|
||||
jne :$LN5@StartCredi
|
||||
; Line 262
|
||||
push [Credit.pData]
|
||||
call _free
|
||||
pop ecx
|
||||
:$LN8@StartCredi
|
||||
; Line 299
|
||||
xor eax, eax
|
||||
:$LN1@StartCredi
|
||||
pop edi
|
||||
pop esi
|
||||
mov ecx, [ArrayPad]
|
||||
call __security_check_cookie
|
||||
leave
|
||||
retn
|
||||
:$LN5@StartCredi
|
||||
; Line 267
|
||||
push eax
|
||||
push [Credit.size]
|
||||
xor edi, edi
|
||||
inc edi
|
||||
push edi
|
||||
push [Credit.pData]
|
||||
call _fread
|
||||
; Line 274
|
||||
push [Credit.size]
|
||||
push [Credit.pData]
|
||||
call EncryptionBinaryData2
|
||||
; Line 293
|
||||
push 25 ; 00000025H
|
||||
push str_casts
|
||||
mov [Credit.offset], esi
|
||||
mov [Credit.wait], esi
|
||||
mov [Credit.mode], edi
|
||||
mov [Illust.x], fffec000 ; fffec000H
|
||||
mov [Illust.act_no], esi
|
||||
mov [grcGame.left], 0a0 ; 000000a0H
|
||||
call ReloadBitmapFile
|
||||
add esp, 20 ; 00000020H
|
||||
test eax, eax
|
||||
je SHORT :$LN8@StartCredi
|
||||
; Line 297
|
||||
push fullsize
|
||||
push esi
|
||||
push [Strip_addr]
|
||||
call _memset
|
||||
add esp, 0c ; 0000000cH
|
||||
; Line 298
|
||||
mov eax, edi
|
||||
jmp :$LN1@StartCredi
|
||||
|
||||
:openfile
|
||||
MOV ECX,[48F918]
|
||||
PUSH ECX
|
||||
PUSH 0049E220
|
||||
PUSH 0048C374
|
||||
LEA EDX,[path]
|
||||
PUSH EDX
|
||||
CALL 00481010
|
||||
ADD ESP,10
|
||||
|
||||
LEA EDX,[path]
|
||||
PUSH EDX
|
||||
CALL 00410D80
|
||||
ADD ESP,4
|
||||
MOV [Credit.size],EAX
|
||||
CMP EAX,-1
|
||||
JNE :allocatebuffer
|
||||
XOR EAX,EAX
|
||||
JMP :end
|
||||
|
||||
:allocatebuffer
|
||||
MOV ECX,[Credit.size]
|
||||
PUSH ECX
|
||||
CALL 004813A3
|
||||
ADD ESP,4
|
||||
MOV [Credit.pData],EAX
|
||||
CMP EAX,0
|
||||
JNE :fopen
|
||||
JMP :end //EAX must be 0, return false
|
||||
|
||||
:fopen
|
||||
PUSH 0048C37C
|
||||
LEA EAX,[path]
|
||||
PUSH EAX
|
||||
CALL 00480FFD
|
||||
ADD ESP,8
|
||||
MOV [fp],EAX
|
||||
CMP EAX,0
|
||||
JNE :readdata
|
||||
MOV EDX,[Credit.pData]
|
||||
PUSH EDX
|
||||
CALL 0048128B
|
||||
ADD ESP,4
|
||||
JMP :end //EAX must be 0, return false
|
||||
|
||||
:readdata
|
||||
MOV ECX,[fp]
|
||||
PUSH ECX
|
||||
MOV EDX,[Credit.size]
|
||||
PUSH EDX
|
||||
PUSH 1
|
||||
MOV EAX,[Credit.pData]
|
||||
PUSH EAX
|
||||
CALL 00480F55
|
||||
ADD ESP,8
|
||||
|
||||
MOV EDX,[Credit.size]
|
||||
PUSH EDX
|
||||
MOV ECX,[Credit.pData]
|
||||
PUSH ECX
|
||||
CALL 004215C0
|
||||
ADD ESP,8
|
||||
|
||||
MOV [Credit.offset],0
|
||||
MOV [Credit.wait],0
|
||||
MOv [Credit.mode],1
|
||||
MOV [Illust.x],FFFEC000
|
||||
MOV [Illust.act_no],0
|
||||
|
||||
MOV [grcGame.left],0A0
|
||||
|
||||
PUSH 25
|
||||
PUSH 0048C380
|
||||
CALL 0040BFD0
|
||||
ADD ESP,8
|
||||
TEST EAX,EAX
|
||||
JNE :clearcasts
|
||||
JMP :end //EAX is 0, return false
|
||||
|
||||
:clearcasts
|
||||
MOV EDX,sizeof
|
||||
IMUL EDX,EDX,MAX_STRIP
|
||||
PUSH EDX
|
||||
PUSH 0
|
||||
MOV EAX,[Strip_addr]
|
||||
PUSH EAX
|
||||
CALL 00480D30
|
||||
ADD ESP,0C
|
||||
|
||||
MOV EAX,1
|
||||
|
||||
:end
|
||||
MOV ECX,[EBP-8]
|
||||
CALL 00480DC1
|
||||
MOV ESP,EBP
|
||||
POP EBP
|
||||
RETN
|
||||
INT3
|
||||
data cc cc cc cc cc cc cc cc
|
Binary file not shown.
BIN
pre-edited-cs/Doukutsu_backup.exe
Normal file
BIN
pre-edited-cs/Doukutsu_backup.exe
Normal file
Binary file not shown.
Loading…
Reference in a new issue