Merge pull request #323 from Cuyler36:m_catalog_ovl

Implement & link m_catalog_ovl
This commit is contained in:
Cuyler36
2024-04-17 10:20:25 -04:00
committed by GitHub
12 changed files with 4966 additions and 1365 deletions
+4
View File
@@ -897,6 +897,10 @@ m_birthday_ovl.c:
.rodata: [0x8064AE90, 0x8064AEB8]
.data: [0x806C7BE0, 0x806C7C60]
.bss: [0x8133E0C0, 0x8133E0C8]
m_catalog_ovl.c:
.text: [0x805C9254, 0x805CC1F4]
.rodata: [0x8064AF90, 0x8064B090]
.data: [0x806C8AB0, 0x806CB838]
m_editEndChk_ovl.c:
.text: [0x805D7A64, 0x805D8498]
.rodata: [0x8064B2C0, 0x8064B300]
+80
View File
@@ -0,0 +1,80 @@
#ifndef M_CATALOG_OVL_H
#define M_CATALOG_OVL_H
#include "types.h"
#include "m_catalog_ovl_h.h"
#include "m_submenu_ovl.h"
#include "ac_furniture.h"
#include "m_item_name.h"
#ifdef __cplusplus
extern "C" {
#endif
#define mCL_MENU_ITEM_MAX 742
#define mCL_MENU_PAGE_SIZE 7
#define mCL_ITEM_DATA_NUM 2
enum {
mCL_MENU_FTR,
mCL_MENU_WALL,
mCL_MENU_CARPET,
mCL_MENU_CLOTH,
mCL_MENU_UMBRELLA,
mCL_MENU_PAPER,
mCL_MENU_HANIWA,
mCL_MENU_FOSSIL,
mCL_MENU_MUSIC,
mCL_MENU_NUM
};
typedef struct catalog_item_s {
FTR_ACTOR ftr_actor;
u8* seg0;
u8* seg1;
u8 segment_data[0x4820];
aFTR_PROFILE* profile;
int seg_ofs;
s16 gfx_type;
s16 timer;
u32 price;
f32 scale;
f32 pos_y;
mActor_name_t item_no;
u16 _509A;
u16 _509C;
} mCL_Item_c;
typedef struct catalog_menu_s {
s16 item_count;
s16 top_idx;
s16 y_idx;
u8 completed_flag;
mActor_name_t item_list[mCL_MENU_ITEM_MAX];
u8 item_name[mCL_MENU_PAGE_SIZE][mIN_ITEM_NAME_LEN];
} mCL_Menu_c;
struct catalog_ovl_s {
u8 item_data_idx;
u8 page_no;
s16 page_timer;
int _0004;
mCL_Item_c item_data[mCL_ITEM_DATA_NUM];
mCL_Menu_c menu_data[mCL_MENU_NUM];
u8 _D9AC[72];
u8 page_order[mCL_MENU_NUM];
u8 change_flag;
u8 counter;
u8 alpha;
};
extern void mCL_catalog_ovl_set_proc(Submenu* submenu);
extern void mCL_catalog_ovl_construct(Submenu* submenu);
extern void mCL_catalog_ovl_destruct(Submenu* submenu);
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_CATALOG_OVL_H_H
#define M_CATALOG_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct catalog_ovl_s mCL_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+26
View File
@@ -0,0 +1,26 @@
#ifndef M_HAND_OVL_H
#define M_HAND_OVL_H
#include "types.h"
#include "m_hand_ovl_h.h"
#include "m_submenu_ovl.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef void (*mHD_OVL_NOP_HAND_FUNC)(Submenu*);
typedef void (*mHD_OVL_SET_HAND_FUNC)(Submenu*);
/* sizeof(struct hand_ovl_s) == 0x378 */
struct hand_ovl_s {
u8 _000[0x370 - 0x000]; /* TODO */
mHD_OVL_NOP_HAND_FUNC nop_hand_func;
mHD_OVL_SET_HAND_FUNC set_hand_func;
};
#ifdef __cplusplus
}
#endif
#endif
+16
View File
@@ -0,0 +1,16 @@
#ifndef M_HAND_OVL_H_H
#define M_HAND_OVL_H_H
#include "types.h"
#ifdef __cplusplus
extern "C" {
#endif
typedef struct hand_ovl_s mHD_Ovl_c;
#ifdef __cplusplus
}
#endif
#endif
+101 -94
View File
@@ -25,69 +25,76 @@
#include "m_notice_ovl_h.h"
#include "m_birthday_ovl_h.h"
#include "m_tag_ovl_h.h"
#include "m_catalog_ovl_h.h"
#include "m_hand_ovl_h.h"
#ifdef __cplusplus
extern "C" {
#endif
enum {
mSM_OVL_PROC_MOVE,
mSM_OVL_PROC_PLAY,
mSM_OVL_PROC_WAIT,
mSM_OVL_PROC_OBEY,
mSM_OVL_PROC_END,
mSM_OVL_PROC_MOVE,
mSM_OVL_PROC_PLAY,
mSM_OVL_PROC_WAIT,
mSM_OVL_PROC_OBEY,
mSM_OVL_PROC_END,
mSM_OVL_PROC_NUM
mSM_OVL_PROC_NUM
};
// TODO: fill this out
typedef struct submenu_segment_s {
u8 _00[0x54];
u8 _00[0x54];
} mSM_Segment_c;
typedef struct submenu_menu_info_s {
int menu_type;
int proc_status;
int pre_menu_type;
SUBMENU_PROC pre_move_func;
SUBMENU_GAME_PROC pre_draw_func;
int menu_type;
int proc_status;
int next_menu_type;
int pre_menu_type;
SUBMENU_PROC pre_move_func;
SUBMENU_GAME_PROC pre_draw_func;
f32 position[2];
f32 speed[2];
int next_menu_type;
char* _28;
int _2C;
f32 position[2];
f32 speed[2];
int next_proc_status;
s16 move_drt;
u16 _36;
char* _28;
int _2C;
int data0;
int data1;
void* data2;
int data3;
int next_proc_status;
s16 move_drt;
u16 _36;
int data0;
int data1;
void* data2;
int data3;
} mSM_MenuInfo_c;
typedef void (*mSM_HAND_MOVE_FUNC)(Submenu*);
typedef void (*mSM_HAND_DRAW_FUNC)(Submenu*, GAME*);
typedef void (*mSM_TAG_MOVE_FUNC)(Submenu*, mSM_MenuInfo_c*);
typedef void (*mSM_TAG_DRAW_FUNC)(Submenu*, GAME*, int);
typedef struct submenu_control_s {
SUBMENU_PROC menu_move_func;
SUBMENU_GAME_PROC menu_draw_func;
SUBMENU_PROC menu_move_func;
SUBMENU_GAME_PROC menu_draw_func;
void* hand_move_func;
void* hand_draw_func;
mSM_HAND_MOVE_FUNC hand_move_func;
mSM_HAND_DRAW_FUNC hand_draw_func;
void* tag_move_func;
void* tag_draw_func;
mSM_TAG_MOVE_FUNC tag_move_func;
mSM_TAG_DRAW_FUNC tag_draw_func;
int stick_release;
u32 trigger;
u32 last_trigger;
s16 repeat_timer;
s16 texture_movement_angle;
f32 texture_pos[2];
int animation_flag;
int stick_release;
u32 trigger;
u32 last_trigger;
s16 repeat_timer;
s16 texture_movement_angle;
f32 texture_pos[2];
int animation_flag;
} mSM_Control_c;
typedef void (*mSM_RETURN_FUNC_PROC)(Submenu*, mSM_MenuInfo_c*);
@@ -106,62 +113,62 @@ typedef void (*mSM_MOVE_PROC)(Submenu*, mSM_MenuInfo_c*);
/* sizeof(struct submenu_overlay_s) == 0xA04 */
struct submenu_overlay_s {
/* TODO: finish */
/* 0x000 */ mSM_Segment_c segment;
/* 0x054 */ mSM_MenuInfo_c menu_info[mSM_OVL_NUM];
/* 0x90C */ mSM_Control_c menu_control;
/* 0x940 */ mSM_RETURN_FUNC_PROC return_func_proc;
/* 0x944 */ mSM_MOVE_MOVE_PROC move_Move_proc;
/* 0x948 */ mSM_MOVE_END_PROC move_End_proc;
/* 0x94C */ mSM_MOVE_CHG_BASE_PROC move_chg_base_proc;
/* 0x950 */ mSM_SET_CHAR_MATRIX_PROC set_char_matrix_proc;
/* 0x954 */ mSM_CBUF_COPY_PROC cbuf_copy_proc;
/* 0x958 */ mSM_SET_DRAWMODE_PROC set_drawMode_proc;
/* 0x95C */ mSM_DRAW_ITEM_PROC draw_item_proc;
/* 0x960 */ mSM_DRAW_MAIL_PROC draw_mail_proc;
/* 0x964 */ mSM_SETUP_VIEW_PROC setup_view_proc;
/* 0x968 */ void* unused_func_968;
/* 0x96C */ mSM_CHANGE_VIEW_PROC change_view_proc;
/* 0x970 */ void* _970;
/* 0x974 */ void* _974;
/* 0x978 */ void* _978;
/* 0x97C */ mTG_Ovl_c* tag_ovl;
/* 0x980 */ void* _980;
/* 0x984 */ mHP_Ovl_c* hanwiaPortrait_ovl;
/* 0x988 */ void* inventory_ovl;
/* 0x98C */ mED_Ovl_c* editor_ovl;
/* 0x990 */ mBD_Ovl_c* board_ovl;
/* 0x994 */ mAD_Ovl_c* address_ovl;
/* 0x998 */ void* _998;
/* 0x99C */ void* _99C;
/* 0x9A0 */ mTI_Ovl_c* timeIn_ovl;
/* 0x9A4 */ mEE_Ovl_c* editEndChk_ovl;
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
/* 0x9AC */ mRP_Ovl_c* repay_ovl;
/* 0x9B0 */ void* _9B0;
/* 0x9B4 */ mMP_Overlay_c* map_ovl;
/* 0x9B8 */ mNT_Ovl_c* notice_ovl;
/* 0x9BC */ mBR_Ovl_c* birthday_ovl;
/* 0x9C0 */ void* _9C0;
/* 0x9C4 */ void* _9C4;
/* 0x9C8 */ void* _9C8;
/* 0x9CC */ void* _9CC;
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
/* 0x9D8 */ void* _9D8;
/* 0x9DC */ void* _9DC;
/* 0x9E0 */ void* _9E0;
/* 0x9E4 */ void* _9E4;
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
/* 0x9EC */ void* _9EC;
/* 0x9F0 */ mPM_Ovl_c* passwordMake_ovl;
/* 0x9F4 */ mPC_Ovl_c* passwordChk_ovl;
/* 0x9F8 */ u8 hboard_exists;
/* 0x9F9 */ u8 le_exists;
/* 0x9FA */ u8 _9FA;
/* 0x9FB */ u8 _9FB;
/* 0x9FC */ int _9FC;
/* 0xA00 */ Mtx* projection_matrix;
/* TODO: finish */
/* 0x000 */ mSM_Segment_c segment;
/* 0x054 */ mSM_MenuInfo_c menu_info[mSM_OVL_NUM];
/* 0x90C */ mSM_Control_c menu_control;
/* 0x940 */ mSM_RETURN_FUNC_PROC return_func_proc;
/* 0x944 */ mSM_MOVE_MOVE_PROC move_Move_proc;
/* 0x948 */ mSM_MOVE_END_PROC move_End_proc;
/* 0x94C */ mSM_MOVE_CHG_BASE_PROC move_chg_base_proc;
/* 0x950 */ mSM_SET_CHAR_MATRIX_PROC set_char_matrix_proc;
/* 0x954 */ mSM_CBUF_COPY_PROC cbuf_copy_proc;
/* 0x958 */ mSM_SET_DRAWMODE_PROC set_drawMode_proc;
/* 0x95C */ mSM_DRAW_ITEM_PROC draw_item_proc;
/* 0x960 */ mSM_DRAW_MAIL_PROC draw_mail_proc;
/* 0x964 */ mSM_SETUP_VIEW_PROC setup_view_proc;
/* 0x968 */ void* unused_func_968;
/* 0x96C */ mSM_CHANGE_VIEW_PROC change_view_proc;
/* 0x970 */ void* _970;
/* 0x974 */ void* _974;
/* 0x978 */ void* _978;
/* 0x97C */ mTG_Ovl_c* tag_ovl;
/* 0x980 */ mHD_Ovl_c* hand_ovl;
/* 0x984 */ mHP_Ovl_c* hanwiaPortrait_ovl;
/* 0x988 */ void* inventory_ovl;
/* 0x98C */ mED_Ovl_c* editor_ovl;
/* 0x990 */ mBD_Ovl_c* board_ovl;
/* 0x994 */ mAD_Ovl_c* address_ovl;
/* 0x998 */ void* _998;
/* 0x99C */ void* _99C;
/* 0x9A0 */ mTI_Ovl_c* timeIn_ovl;
/* 0x9A4 */ mEE_Ovl_c* editEndChk_ovl;
/* 0x9A8 */ mWR_Ovl_c* warning_ovl;
/* 0x9AC */ mRP_Ovl_c* repay_ovl;
/* 0x9B0 */ void* _9B0;
/* 0x9B4 */ mMP_Overlay_c* map_ovl;
/* 0x9B8 */ mNT_Ovl_c* notice_ovl;
/* 0x9BC */ mBR_Ovl_c* birthday_ovl;
/* 0x9C0 */ void* _9C0;
/* 0x9C4 */ void* _9C4;
/* 0x9C8 */ void* _9C8;
/* 0x9CC */ mCL_Ovl_c* catalog_ovl;
/* 0x9D0 */ mMU_Overlay_c* music_ovl;
/* 0x9D4 */ mBN_Overlay_c* bank_ovl;
/* 0x9D8 */ void* _9D8;
/* 0x9DC */ void* _9DC;
/* 0x9E0 */ void* _9E0;
/* 0x9E4 */ void* _9E4;
/* 0x9E8 */ mDI_Ovl_c* diary_ovl;
/* 0x9EC */ void* _9EC;
/* 0x9F0 */ mPM_Ovl_c* passwordMake_ovl;
/* 0x9F4 */ mPC_Ovl_c* passwordChk_ovl;
/* 0x9F8 */ u8 hboard_exists;
/* 0x9F9 */ u8 le_exists;
/* 0x9FA */ u8 _9FA;
/* 0x9FB */ u8 _9FB;
/* 0x9FC */ int _9FC;
/* 0xA00 */ Mtx* projection_matrix;
};
extern void mSM_menu_ovl_init(Submenu* submenu);
+19 -3
View File
@@ -9,13 +9,29 @@
extern "C" {
#endif
#define mTG_TAG_NUM 4
typedef void (*mTG_INIT_TAG_DATA_ITEM_WIN_PROC)(Submenu*);
typedef void (*mTG_CHG_TAG_FUNC_PROC)(Submenu*, int, int, int, f32, f32);
/* sizeof(mTG_tag_c) == 0xB4 */
typedef struct tag_s {
u8 type;
u8 _01[0x40 - 0x01];
int _40;
u8 _44[0xB4 - 0x44];
} mTG_tag_c;
/* TODO */
struct tag_ovl_s {
/* 0x000 */ u8 _000[0x2E0 - 0x000];
/* 0x2E0 */ mTG_INIT_TAG_DATA_ITEM_WIN_PROC init_tag_data_item_win_proc;
/* 0x2E4 */ u8 _2E4[0x3C4 - 0x2E4];
/* 0x000 */ int sel_tag_idx;
/* 0x004 */ int ret_tag_idx;
/* 0x008 */ mTG_tag_c tags[mTG_TAG_NUM];
/* 0x2D8 */ void* _2D8;
/* 0x2DC */ void* _2DC;
/* 0x2E0 */ mTG_INIT_TAG_DATA_ITEM_WIN_PROC init_tag_data_item_win_proc;
/* 0x2E4 */ mTG_CHG_TAG_FUNC_PROC chg_tag_func_proc;
/* 0x2E8 */ u8 _2E8[0x3C4 - 0x2E8];
};
#ifdef __cplusplus
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+1436
View File
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+636
View File
@@ -0,0 +1,636 @@
extern Gfx lat_letter01_model[];
extern Gfx lat_letter02_model[];
extern Gfx lat_letter03_model[];
extern Gfx lat_letter04_model[];
extern Gfx lat_letter05_model[];
extern Gfx lat_letter06_model[];
extern Gfx lat_letter07_model[];
extern Gfx lat_letter08_model[];
extern Gfx lat_letter09_model[];
extern Gfx lat_letter10_model[];
extern Gfx lat_letter11_model[];
extern Gfx lat_letter12_model[];
extern Gfx lat_letter13_model[];
extern Gfx lat_letter14_model[];
extern Gfx lat_letter15_model[];
extern Gfx lat_letter16_model[];
extern Gfx lat_letter17_model[];
extern Gfx lat_letter18_model[];
extern Gfx lat_letter19_model[];
extern Gfx lat_letter20_model[];
extern Gfx lat_letter21_model[];
extern Gfx lat_letter22_model[];
extern Gfx lat_letter23_model[];
extern Gfx lat_letter24_model[];
extern Gfx lat_letter25_model[];
extern Gfx lat_letter26_model[];
extern Gfx lat_letter27_model[];
extern Gfx lat_letter28_model[];
extern Gfx lat_letter29_model[];
extern Gfx lat_letter30_model[];
extern Gfx lat_letter31_model[];
extern Gfx lat_letter32_model[];
extern Gfx lat_letter33_model[];
extern Gfx lat_letter34_model[];
extern Gfx lat_letter35_model[];
extern Gfx lat_letter36_model[];
extern Gfx lat_letter37_model[];
extern Gfx lat_letter38_model[];
extern Gfx lat_letter39_model[];
extern Gfx lat_letter40_model[];
extern Gfx lat_letter41_model[];
extern Gfx lat_letter42_model[];
extern Gfx lat_letter43_model[];
extern Gfx lat_letter44_model[];
extern Gfx lat_letter45_model[];
extern Gfx lat_letter46_model[];
extern Gfx lat_letter47_model[];
extern Gfx lat_letter48_model[];
extern Gfx lat_letter49_model[];
extern Gfx lat_letter50_model[];
extern Gfx lat_letter51_model[];
extern Gfx lat_letter52_model[];
extern Gfx lat_letter53_model[];
extern Gfx lat_letter54_model[];
extern Gfx lat_letter55_model[];
extern Gfx lat_letter56_model[];
extern Gfx lat_letter57_model[];
extern Gfx lat_letter58_model[];
extern Gfx lat_letter59_model[];
extern Gfx lat_letter60_model[];
extern Gfx lat_letter61_model[];
extern Gfx lat_letter62_model[];
extern Gfx lat_letter63_win_model[];
extern Gfx lat_letter64_model[];
// clang-format off
static Gfx* paper_disp_model[] = {
lat_letter01_model,
lat_letter02_model,
lat_letter03_model,
lat_letter04_model,
lat_letter05_model,
lat_letter06_model,
lat_letter07_model,
lat_letter08_model,
lat_letter09_model,
lat_letter10_model,
lat_letter11_model,
lat_letter12_model,
lat_letter13_model,
lat_letter14_model,
lat_letter15_model,
lat_letter16_model,
lat_letter17_model,
lat_letter18_model,
lat_letter19_model,
lat_letter20_model,
lat_letter21_model,
lat_letter22_model,
lat_letter23_model,
lat_letter24_model,
lat_letter25_model,
lat_letter26_model,
lat_letter27_model,
lat_letter28_model,
lat_letter29_model,
lat_letter30_model,
lat_letter31_model,
lat_letter32_model,
lat_letter33_model,
lat_letter34_model,
lat_letter35_model,
lat_letter36_model,
lat_letter37_model,
lat_letter38_model,
lat_letter39_model,
lat_letter40_model,
lat_letter41_model,
lat_letter42_model,
lat_letter43_model,
lat_letter44_model,
lat_letter45_model,
lat_letter46_model,
lat_letter47_model,
lat_letter48_model,
lat_letter49_model,
lat_letter50_model,
lat_letter51_model,
lat_letter52_model,
lat_letter53_model,
lat_letter54_model,
lat_letter55_model,
lat_letter56_model,
lat_letter57_model,
lat_letter58_model,
lat_letter59_model,
lat_letter60_model,
lat_letter61_model,
lat_letter62_model,
lat_letter63_win_model,
lat_letter64_model,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};
// clang-format on
extern Gfx lat_letter01_sen_model[];
extern Gfx lat_letter02_sen_model[];
extern Gfx lat_letter03_sen_model[];
extern Gfx lat_letter04_senT_model[];
extern Gfx lat_letter06_sen_model[];
extern Gfx lat_letter07_sen_model[];
extern Gfx lat_letter08_sen_model[];
extern Gfx lat_letter10_sen_model[];
extern Gfx lat_letter12_sen_model[];
extern Gfx lat_letter16_sen_model[];
extern Gfx lat_letter17_sen_model[];
extern Gfx lat_letter18_sen_model[];
extern Gfx lat_letter20_sen_model[];
extern Gfx lat_letter21_sen_model[];
extern Gfx lat_letter22_sen_model[];
extern Gfx lat_letter29_sen_model[];
extern Gfx lat_letter30_sen_model[];
extern Gfx lat_letter31_sen_model[];
extern Gfx lat_letter32_sen_model[];
extern Gfx lat_letter33_sen_model[];
extern Gfx lat_letter34_sen_model[];
extern Gfx lat_letter35_sen_model[];
extern Gfx lat_letter36_sen_model[];
extern Gfx lat_letter37_sen_model[];
extern Gfx lat_letter38_sen_model[];
extern Gfx lat_letter39_sen_model[];
extern Gfx lat_letter40_sen_model[];
extern Gfx lat_letter41_sen_model[];
extern Gfx lat_letter42_sen_model[];
extern Gfx lat_letter43_sen_model[];
extern Gfx lat_letter44_sen_model[];
extern Gfx lat_letter45_sen_model[];
extern Gfx lat_letter46_sen_model[];
extern Gfx lat_letter47_sen_model[];
extern Gfx lat_letter48_sen_model[];
extern Gfx lat_letter49_sen_model[];
extern Gfx lat_letter50_sen_model[];
extern Gfx lat_letter51_sen_model[];
extern Gfx lat_letter52_sen_model[];
extern Gfx lat_letter53_sen_model[];
extern Gfx lat_letter54_sen_model[];
extern Gfx lat_letter55_sen_model[];
extern Gfx lat_letter56_sen_model[];
extern Gfx lat_letter57_sen_model[];
extern Gfx lat_letter58_sen_model[];
extern Gfx lat_letter59_sen_model[];
extern Gfx lat_letter60_sen_model[];
extern Gfx lat_letter61_sen_model[];
extern Gfx lat_letter62_sen_model[];
extern Gfx lat_letter63_senT_model[];
extern Gfx lat_letter64_sen_model[];
static Gfx* paper_disp_sen_model[] = {
lat_letter01_sen_model,
lat_letter02_sen_model,
lat_letter03_sen_model,
lat_letter04_senT_model,
NULL,
lat_letter06_sen_model,
lat_letter07_sen_model,
lat_letter08_sen_model,
NULL,
lat_letter10_sen_model,
NULL,
lat_letter12_sen_model,
NULL,
NULL,
NULL,
lat_letter16_sen_model,
lat_letter17_sen_model,
lat_letter18_sen_model,
NULL,
lat_letter20_sen_model,
lat_letter21_sen_model,
lat_letter22_sen_model,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
lat_letter29_sen_model,
lat_letter30_sen_model,
lat_letter31_sen_model,
lat_letter32_sen_model,
lat_letter33_sen_model,
lat_letter34_sen_model,
lat_letter35_sen_model,
lat_letter36_sen_model,
lat_letter37_sen_model,
lat_letter38_sen_model,
lat_letter39_sen_model,
lat_letter40_sen_model,
lat_letter41_sen_model,
lat_letter42_sen_model,
lat_letter43_sen_model,
lat_letter44_sen_model,
lat_letter45_sen_model,
lat_letter46_sen_model,
lat_letter47_sen_model,
lat_letter48_sen_model,
lat_letter49_sen_model,
lat_letter50_sen_model,
lat_letter51_sen_model,
lat_letter52_sen_model,
lat_letter53_sen_model,
lat_letter54_sen_model,
lat_letter55_sen_model,
lat_letter56_sen_model,
lat_letter57_sen_model,
lat_letter58_sen_model,
lat_letter59_sen_model,
lat_letter60_sen_model,
lat_letter61_sen_model,
lat_letter62_sen_model,
lat_letter63_senT_model,
lat_letter64_sen_model,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
NULL,
};