4 //#define SECTION_FAST //.section emu.fast, "awx"
5 //#define SECTION_SLOW //.section emu.slow, "awx"
6 //#define SECTION_HEAD //.section emu.head, "awx"
9 #define SECTION_DATA .data
10 #define SECTION_TEXT .text
15 * A ¤Ï¾ï¤Ë 24 ¥Ó¥Ã¥È¥·¥Õ¥È¤·¤Æ¤ª¤¯
17 * NZ¤Ï¤Û¤È¤ó¤É¤ÎÌ¿Î᤬Êѹ¹¤¹¤ë¤Î¤Ç¡¤NZ¤Î¸µ¤Ë¤Ê¤ëÃͤòÊݸ
18 * »Ä¤ê¤Ï¾¤Î¾ì½ê¤ËÃÖ¤¯
20 * S ¤Ï24¥Ó¥Ã¥È¥·¥Õ¥È¤·¤Æ¤ª¤¯
21 * ¤³¤ì¤Ç;¤Ã¤Æ²¼¤Î¥Ó¥Ã¥È¤Ë P ¤Î»Ä¤ê¤òÃÖ¤¯(VBDI)
22 * ¤µ¤é¤Ë;¤Ã¤Æ¤ë¤È¤³¤í¤Ë¤Ï³ä¤ê¹þ¤ß¤Ë´Ø¤¹¤ë¥Õ¥é¥°¤òÃÖ¤¯
24 * PC ¤ÏROMÆâ¤Î¥¢¥É¥ì¥¹¤ËÊÑ´¹¤·¤Æ¤ª¤¯
25 * ¤³¤Î¾ì¹ç¤Ï¶³¦¥Á¥§¥Ã¥¯¤ò¤·¤¿¤Û¤¦¤¬¤¤¤¤¤Î¤À¤¬¡¤´Êñ¤Ç¤Ï¤Ê¤¤
26 * ËÜÅö¤Î PC ¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¸½ºß¤Î¥Ð¥ó¥¯¤ÎÀèƬ¥¢¥É¥ì¥¹¤ò°ú¤±¤Ð¤è¤¤
28 * I just love the above comments :)
31 // // offs in nes_registers
32 #define REG_A r4 // 00
33 #define REG_X r5 // 04
34 #define REG_Y r6 // 08
35 #define REG_PC r7 // 0c
36 #define REG_S r8 // 10
38 #define REG_NZ r9 // 14
39 #define REG_ADDR r10 // 18
40 #define REG_CYCLE r11 // 1c [31:16] - fceu cycles, [15:8] - fceu irqhook cycles, [7:0] - fceu timestamp cycles
41 #define REG_OP_TABLE r12 // 20
45 * REG_P_REST ¤Ë¤Ï³Æ¼ï¥Õ¥é¥°¤òÃÖ¤¯
49 * |||||||| |||||||+---C ¥¥ã¥ê¡¼¤Þ¤¿¤Ï¥Ü¥í¡¼¤Ê¤·
50 * |||||||| ||||||+---NMI¤ÎȯÀ¸
51 * |||||||| |||||+---I ³ä¤ê¹þ¤ßµö²Ä
52 * |||||||| ||||+---D ½½¿Ê¥â¡¼¥É
54 * |||||||| ||+---IRQ¤ÎȯÀ¸
55 * |||||||| |+---V ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼
56 * |||||||| +---$2005/$2006 ¥È¥°¥ë¥Õ¥é¥°
58 * |||||||+---$2000[2] 32¥¤¥ó¥¯¥ê¥á¥ó¥È
59 * ||||||+---$2000[3] ¥¹¥×¥é¥¤¥È¥¢¥É¥ì¥¹ÁªÂò
60 * |||||+---$2000[4] ¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¥¢¥É¥ì¥¹ÁªÂò
61 * ||||+---$2000[5] ¥¹¥×¥é¥¤¥È¥µ¥¤¥º
63 * ||+---$2000[7] NMIµö²Ä
64 * |+---$2001[3] ¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤òÉÁ²è
65 * +---$2001[4] ¥¹¥×¥é¥¤¥È¤òÉÁ²è
69 * |||||||||||||||+---$2002[4] VRAM¤Ë½ñ¤¹þ¤ß²Ä¡©
70 * ||||||||||||||+---$2002[5] ¥¹¥×¥é¥¤¥È¤¬Â¿¤¹¤®
71 * |||||||||||||+---$2002[6] ¥¹¥×¥é¥¤¥È¥Ò¥Ã¥È(¼ÂÁõ¤Ç¤¤ë¤Î¤«¡©)
72 * ||||||||||||+---$2002[7] VBL
73 * |||||||||||+---DMC³ä¤ê¹þ¤ßȯÀ¸
74 * ||||||||||+---VRAM¤ò»ý¤Ã¤Æ¤¤¤ë
76 * ++++++++---S ¥¹¥¿¥Ã¥¯¥Ý¥¤¥ó¥¿
78 * note: fceu uses this differently
79 * [7:0] - interrupt flags (same as above)
80 * [15:8] - FCEU IRQ pending sources
81 * [16] - a flag which indicates that MapIRQHook is not null
83 * [31:24] - stack pointer
88 * REG_P_REST ¤Ç»È¤¦¥Õ¥é¥°¡£´ðËÜŪ¤ËP¤ÈƱ¤¸°ÌÃ֤ˤ¢¤ë
90 #define P_REST_V_FLAG 0x40
91 #define P_REST_B_FLAG 0x10
92 #define P_REST_D_FLAG 0x08
93 #define P_REST_I_FLAG 0x04
94 #define P_REST_C_FLAG 0x01
95 #define P_REST_FLAGS 0x5D
98 * ³ä¤ê¹þ¤ß¤¬È¯À¸¤¹¤ë¤È¥»¥Ã¥È¤µ¤ì¤ë
100 // will be using FCE flags instead of this
101 // #define P_REST_INT_PENDING 0x20
102 // #define P_REST_NMI_PENDING 0x02
104 // #define ASSERT_NMI orr REG_P_REST, REG_P_REST, #P_REST_NMI_PENDING
105 // #define ASSERT_INT orr REG_P_REST, REG_P_REST, #P_REST_INT_PENDING
109 * 6502 ¤ÎËÜÅö¤Î¥Õ¥é¥°
111 #define P_N_FLAG 0x80
112 #define P_V_FLAG 0x40
113 #define P_R_FLAG 0x20
114 #define P_B_FLAG 0x10
115 #define P_D_FLAG 0x08
116 #define P_I_FLAG 0x04
117 #define P_Z_FLAG 0x02
118 #define P_C_FLAG 0x01
121 #define RESET_VECTOR 4