[Reverse-engineering] [th02] Player: Current master.lib sprite ID

And here we find a bunch of unconditional PAT_PLAYCHAR_STILL render
calls… 🤔

Part of P0259, funded by Splashman and Yanga.
This commit is contained in:
nmlgc 2023-10-22 20:03:12 +02:00
parent 42abdc3de4
commit 1bb6068d6a
4 changed files with 34 additions and 16 deletions

View File

@ -1,6 +1,9 @@
#include "platform.h" #include "platform.h"
#include "pc98.h" #include "pc98.h"
#include "th02/main/player/player.hpp" #include "th02/main/player/player.hpp"
#include "th02/sprites/main_pat.h"
extern int player_patnum; // ACTUAL TYPE: main_patnum_t
void pascal near player_move(pixel_delta_8_t delta_x, pixel_delta_8_t delta_y) void pascal near player_move(pixel_delta_8_t delta_x, pixel_delta_8_t delta_y)
; ;

View File

@ -1,6 +1,16 @@
#define MISS_ANIM_CELS 6
/// Stage-independent pattern numbers for the super_*() functions /// Stage-independent pattern numbers for the super_*() functions
/// ------------------------------------------------------------- /// -------------------------------------------------------------
typedef enum { typedef enum {
// miko.bft
// --------
PAT_PLAYCHAR_STILL = 0,
PAT_PLAYCHAR_LEFT = 2,
PAT_PLAYCHAR_RIGHT,
PAT_PLAYCHAR_MISS,
PAT_PLAYCHAR_MISS_last = (PAT_PLAYCHAR_MISS + MISS_ANIM_CELS - 1),
// --------
// miko16.bft // miko16.bft
// ---------- // ----------
PAT_ITEM_POWER = 68, PAT_ITEM_POWER = 68,

View File

@ -1,3 +1,7 @@
PAT_PLAYCHAR_STILL = 0
PAT_PLAYCHAR_LEFT = 2
PAT_PLAYCHAR_RIGHT = 3
PAT_PLAYCHAR_MISS = 4
PAT_ITEM_POWER = 68 PAT_ITEM_POWER = 68
PAT_ITEM_POINT = 69 PAT_ITEM_POINT = 69
PAT_ITEM_BOMB = 70 PAT_ITEM_BOMB = 70

View File

@ -5874,7 +5874,7 @@ loc_EF7F:
sub si, RES_Y sub si, RES_Y
loc_EF9E: loc_EF9E:
call super_roll_put pascal, _player_topleft.x, si, word_1E512 call super_roll_put pascal, _player_topleft.x, si, _player_patnum
loc_EFAC: loc_EFAC:
cmp _power, 8 cmp _power, 8
@ -5961,7 +5961,7 @@ loc_F03D:
mov al, byte_20609 mov al, byte_20609
mov ah, 0 mov ah, 0
sar ax, 2 sar ax, 2
add ax, 4 add ax, PAT_PLAYCHAR_MISS
mov [bp+@@patnum], ax mov [bp+@@patnum], ax
mov si, [bx] mov si, [bx]
add si, _scroll_line add si, _scroll_line
@ -6089,7 +6089,7 @@ loc_F198:
loc_F1B6: loc_F1B6:
mov bx, _player_left_on_back_page mov bx, _player_left_on_back_page
call super_roll_put pascal, word ptr [bx], si, 0 call super_roll_put pascal, word ptr [bx], si, PAT_PLAYCHAR_STILL
jmp short loc_F1D5 jmp short loc_F1D5
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6175,7 +6175,7 @@ loc_F24E:
neg ax neg ax
mov si, ax mov si, ax
xor di, di xor di, di
mov word_1E512, 2 mov _player_patnum, PAT_PLAYCHAR_LEFT
jmp short loc_F2C2 jmp short loc_F2C2
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6184,7 +6184,7 @@ loc_F260:
cbw cbw
mov si, ax mov si, ax
xor di, di xor di, di
mov word_1E512, 3 mov _player_patnum, PAT_PLAYCHAR_RIGHT
jmp short loc_F2C2 jmp short loc_F2C2
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6199,7 +6199,7 @@ loc_F276:
cbw cbw
neg ax neg ax
mov si, ax mov si, ax
mov word_1E512, 2 mov _player_patnum, PAT_PLAYCHAR_LEFT
jmp short loc_F2C2 jmp short loc_F2C2
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6211,7 +6211,7 @@ loc_F288:
mov al, _playchar_speed_diagonal_x mov al, _playchar_speed_diagonal_x
cbw cbw
mov si, ax mov si, ax
mov word_1E512, 3 mov _player_patnum, PAT_PLAYCHAR_RIGHT
jmp short loc_F2C2 jmp short loc_F2C2
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6228,7 +6228,7 @@ loc_F2A4:
mov al, _playchar_speed_diagonal_x mov al, _playchar_speed_diagonal_x
cbw cbw
mov si, ax mov si, ax
mov word_1E512, 3 mov _player_patnum, PAT_PLAYCHAR_RIGHT
jmp short loc_F2C2 jmp short loc_F2C2
; --------------------------------------------------------------------------- ; ---------------------------------------------------------------------------
@ -6237,7 +6237,7 @@ loc_F2B8:
xor di, di xor di, di
loc_F2BC: loc_F2BC:
mov word_1E512, 0 mov _player_patnum, PAT_PLAYCHAR_STILL
loc_F2C2: loc_F2C2:
mov al, _playchar_speed_aligned_x mov al, _playchar_speed_aligned_x
@ -12402,7 +12402,7 @@ sub_12CE5 proc near
sub si, RES_Y sub si, RES_Y
loc_12CFB: loc_12CFB:
call super_roll_put pascal, _player_topleft.x, si, 0 call super_roll_put pascal, _player_topleft.x, si, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -24807,7 +24807,7 @@ mima_init proc far
add ax, 2 add ax, 2
push ax push ax
call super_put_rect call super_put_rect
call super_roll_put pascal, _player_topleft.x, _player_topleft.y, 0 call super_roll_put pascal, _player_topleft.x, _player_topleft.y, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -25962,7 +25962,7 @@ loc_1A613:
call grcg_off call grcg_off
push 600000h push 600000h
call sub_1A423 call sub_1A423
call super_roll_put pascal, _player_topleft.x, _player_topleft.y, 0 call super_roll_put pascal, _player_topleft.x, _player_topleft.y, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -26038,7 +26038,7 @@ sub_1A6C5 proc near
call frame_delay pascal, 1 call frame_delay pascal, 1
call graph_scrollup pascal, 0 call graph_scrollup pascal, 0
graph_accesspage _page_front graph_accesspage _page_front
call super_roll_put pascal, _player_topleft.x, _player_topleft.y, 0 call super_roll_put pascal, _player_topleft.x, _player_topleft.y, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -26151,7 +26151,7 @@ marisa_init proc far
inc ax inc ax
push ax push ax
call super_put_rect call super_put_rect
call super_roll_put pascal, _player_topleft.x, _player_topleft.y, 0 call super_roll_put pascal, _player_topleft.x, _player_topleft.y, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -26198,7 +26198,7 @@ marisa_init proc far
inc ax inc ax
push ax push ax
call super_put_rect call super_put_rect
call super_roll_put pascal, _player_topleft.x, _player_topleft.y, 0 call super_roll_put pascal, _player_topleft.x, _player_topleft.y, PAT_PLAYCHAR_STILL
mov al, _page_back mov al, _page_back
mov ah, 0 mov ah, 0
shl ax, 2 shl ax, 2
@ -30688,7 +30688,8 @@ byte_1E503 db 0
db 0 db 0
angle_1E510 db 20h angle_1E510 db 20h
db 0 db 0
word_1E512 dw 0 public _player_patnum
_player_patnum dw PAT_PLAYCHAR_STILL
db 0 db 0
db 0 db 0
public _power public _power