解决指定内存区域分配时,缺页模拟的内存还是使用的第一块
This commit is contained in:
BIN
mkrtos_user/user/app/ATSURFF437/nes_simulator/nes_rom/hdl.nes
Normal file
BIN
mkrtos_user/user/app/ATSURFF437/nes_simulator/nes_rom/hdl.nes
Normal file
Binary file not shown.
@@ -526,14 +526,20 @@ void nes_emulate_frame(void)
|
||||
extern bool_t print_fps;
|
||||
int32_t used_tick = sys_read_tick() - st_tick;
|
||||
|
||||
// if (1000 / 60 >= used_tick)
|
||||
// {
|
||||
// usleep((1000 / 60 - used_tick) * 1000);
|
||||
// }
|
||||
if (1000 / 60 >= used_tick)
|
||||
{
|
||||
usleep((1000 / 60 - used_tick) * 1000);
|
||||
}
|
||||
used_tick = sys_read_tick() - st_tick;
|
||||
if (print_fps)
|
||||
{
|
||||
printf("fps:%d\n", 1000 / used_tick);
|
||||
static int i = 0;
|
||||
|
||||
i++;
|
||||
if (i % 30 == 0)
|
||||
{
|
||||
printf("fps:%d\n", 1000 / used_tick);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* @version V1.1
|
||||
* @date 2022-05-31
|
||||
* @brief NES PPU ????
|
||||
* ???????????????ye781205??NES?????????, ????<3F><>!
|
||||
* ???????????????ye781205??NES?????????, ????<3F><>!
|
||||
* @license Copyright (c) 2020-2032, ??????????????????????
|
||||
****************************************************************************************************
|
||||
* @attention
|
||||
@@ -116,8 +116,8 @@ uint32 VRAM_accessible()
|
||||
// uint8* get_VROM_tiles() { return VROM_tiles; }
|
||||
|
||||
// #define MASK_BANK(bank,mask) (bank) = ((bank) & (mask))
|
||||
// #define VALIDATE_VROM_BANK(bank) \
|
||||
// MASK_BANK(bank,VROM_mask); \
|
||||
// #define VALIDATE_VROM_BANK(bank)
|
||||
// MASK_BANK(bank,VROM_mask);
|
||||
// if((bank) >= (RomHeader->num_8k_vrom_banks * 8)) return;
|
||||
|
||||
//****************************************************************************************************
|
||||
@@ -410,7 +410,7 @@ void do_scanline_and_draw(uint8 *buf)
|
||||
}
|
||||
else
|
||||
{
|
||||
// clear out solid buffer??????<3F><>????
|
||||
// clear out solid buffer??????<3F><>????
|
||||
memset(ppu->solid_buf, 0x00, sizeof(ppu->solid_buf));
|
||||
}
|
||||
|
||||
@@ -595,7 +595,7 @@ void write_2007(uint8 data)
|
||||
|
||||
if (addr < 0x2000)
|
||||
{
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
|
||||
*(TILE(addr) + (addr & 0xf )) = data;//************************
|
||||
#else
|
||||
@@ -833,7 +833,7 @@ void PPU_WriteToPort(uint8 data, uint16 addr )
|
||||
uint32 attrib_addr;
|
||||
uint32 attrib_bits;
|
||||
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
uint8 pattern_lo;
|
||||
uint8 pattern_hi;
|
||||
uint8 pattern_mask;
|
||||
@@ -872,7 +872,7 @@ void PPU_WriteToPort(uint8 data, uint16 addr )
|
||||
|
||||
// CHECK_MMC2(pattern_addr);//*******************************************************
|
||||
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
data = TILE(pattern_addr) + line;
|
||||
|
||||
pattern_lo = *data;
|
||||
@@ -980,7 +980,7 @@ void PPU_WriteToPort(uint8 data, uint16 addr )
|
||||
|
||||
uint32 spr_height;
|
||||
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
|
||||
uint8 pattern_lo;
|
||||
uint8 pattern_hi;
|
||||
@@ -1078,7 +1078,7 @@ void PPU_WriteToPort(uint8 data, uint16 addr )
|
||||
tile_addr += ppu->spr_pattern_table_addr;
|
||||
}
|
||||
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
t = TILE(tile_addr) + line;
|
||||
|
||||
pattern_lo = *t;
|
||||
@@ -1095,11 +1095,11 @@ void PPU_WriteToPort(uint8 data, uint16 addr )
|
||||
{
|
||||
//uint8 col = 0x00;
|
||||
|
||||
// if a sprite has drawn on this pixel, don't draw anything??????????????????????,?????<3F>ʦ<EFBFBD>???
|
||||
// if a sprite has drawn on this pixel, don't draw anything??????????????????????,?????<3F>ʦ<EFBFBD>???
|
||||
if (!((*solid) & SPR_WRITTEN_FLAG))
|
||||
{
|
||||
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
#if NES_RAM_SPEED==1 //1:??????<3F><> 0:????
|
||||
|
||||
col = ((pattern_hi >> (7 - x) << 1) & 2) | ((pattern_lo >> (7 - x)) & 1);
|
||||
#else
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -77,7 +77,7 @@ int flash_write_sector(uint32_t sector_inx, uint32_t *p_buffer, uint16_t num_wri
|
||||
}
|
||||
|
||||
flash_unlock();
|
||||
status = flash_sector_erase(sector_inx * SECTOR_SIZE + sys_info.bootfs_start_addr);
|
||||
status = flash_sector_erase(write_addr);
|
||||
if (status != FLASH_OPERATE_DONE)
|
||||
{
|
||||
flash_lock();
|
||||
@@ -109,8 +109,8 @@ int flash_init(void)
|
||||
return msg_tag_get_val(tag);
|
||||
}
|
||||
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RW, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
32 * 1024 * 1024 /*TODO:*/, 0x8000000, &vaddr);
|
||||
tag = u_vmam_alloc(VMA_PROT, vma_addr_create(VPAGE_PROT_RWX, VMA_ADDR_PAGE_FAULT_SIM, 0),
|
||||
align_power_of_2(CONFIG_SYS_TEXT_SIZE), CONFIG_SYS_TEXT_ADDR, &vaddr);
|
||||
if (msg_tag_get_val(tag) < 0)
|
||||
{
|
||||
return msg_tag_get_val(tag);
|
||||
|
||||
@@ -873,7 +873,7 @@ void lcd_color_fill(uint16_t sx, uint16_t sy, uint16_t ex, uint16_t ey, uint16_t
|
||||
*/
|
||||
void lcd_num_show(uint16_t x, uint16_t y, uint16_t width, uint16_t height, uint8_t size, int32_t num, uint8_t num_bit)
|
||||
{
|
||||
uint8_t i, buf[12], start;
|
||||
uint8_t i, buf[12], start = 0;
|
||||
|
||||
buf[11] = 0;
|
||||
|
||||
|
||||
@@ -149,7 +149,7 @@ int fs_svr_open(const char *path, int flags, int mode)
|
||||
|
||||
int fs_svr_read(int fd, void *buf, size_t len)
|
||||
{
|
||||
int ret;
|
||||
int ret = -ENOSYS;
|
||||
file_desc_t *fdp = fd_get(thread_get_src_pid(), fd);
|
||||
|
||||
if (!fdp)
|
||||
@@ -171,7 +171,7 @@ int fs_svr_read(int fd, void *buf, size_t len)
|
||||
}
|
||||
int fs_svr_write(int fd, void *buf, size_t len)
|
||||
{
|
||||
int ret;
|
||||
int ret = -ENOSYS;
|
||||
file_desc_t *fdp = fd_get(thread_get_src_pid(), fd);
|
||||
|
||||
if (!fdp)
|
||||
@@ -188,6 +188,7 @@ int fs_svr_write(int fd, void *buf, size_t len)
|
||||
{
|
||||
ret = char_dev->ops->write(char_dev->dev, buf, len, &fdp->offset);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
void fs_svr_close(int fd)
|
||||
{
|
||||
|
||||
@@ -144,6 +144,7 @@ again:
|
||||
/* config i2c */
|
||||
i2c_init(hi2c->i2cx, 0x0F, PCA_I2C_CLKCTRL_400K);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
static int i2c_bus_configure(mk_i2c_t *drv, umword_t freq)
|
||||
{
|
||||
|
||||
@@ -149,7 +149,7 @@ int fs_svr_open(const char *path, int flags, int mode)
|
||||
|
||||
int fs_svr_read(int fd, void *buf, size_t len)
|
||||
{
|
||||
int ret;
|
||||
int ret = -ENOSYS;
|
||||
file_desc_t *fdp = fd_get(thread_get_src_pid(), fd);
|
||||
|
||||
if (!fdp)
|
||||
@@ -171,7 +171,7 @@ int fs_svr_read(int fd, void *buf, size_t len)
|
||||
}
|
||||
int fs_svr_write(int fd, void *buf, size_t len)
|
||||
{
|
||||
int ret;
|
||||
int ret = -ENOSYS;
|
||||
file_desc_t *fdp = fd_get(thread_get_src_pid(), fd);
|
||||
|
||||
if (!fdp)
|
||||
@@ -188,6 +188,7 @@ int fs_svr_write(int fd, void *buf, size_t len)
|
||||
{
|
||||
ret = char_dev->ops->write(char_dev->dev, buf, len, &fdp->offset);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
void fs_svr_close(int fd)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user