Compare commits
13 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5336cf6272 | ||
|
|
29a2deb1f3 | ||
|
|
05f17740fd | ||
|
|
6e179a5866 | ||
|
|
a6586b3467 | ||
|
|
79e43a98e4 | ||
|
|
9413fc5e27 | ||
|
|
1158daab8b | ||
|
|
6f2bf79917 | ||
|
|
c7c21ce752 | ||
|
|
8b34ba6c26 | ||
|
|
e8171d4705 | ||
|
|
f5c15c741b |
56
.travis.yml
56
.travis.yml
@@ -1,32 +1,40 @@
|
|||||||
language: c
|
language: c
|
||||||
git:
|
os:
|
||||||
submodule: true
|
- linux
|
||||||
compiler:
|
- osx
|
||||||
- clang
|
matrix:
|
||||||
- gcc
|
allow_failures:
|
||||||
script:
|
- os: osx
|
||||||
- mkdir build
|
|
||||||
- cd build
|
|
||||||
- cmake -DUSE_ALLEGRO=OFF -DUSE_PROFILING=OFF -DCOVERALLS=OFF -DCMAKE_BUILD_TYPE=Release ..
|
|
||||||
- cmake --build .
|
|
||||||
- cd ..
|
|
||||||
- mkdir coverage
|
|
||||||
- cd coverage
|
|
||||||
- cmake -DUSE_ALLEGRO=OFF -DUSE_PROFILING=OFF -DCOVERALLS=ON -DCMAKE_BUILD_TYPE=Debug ..
|
|
||||||
- cmake --build .
|
|
||||||
- cmake --build . --target coveralls
|
|
||||||
install: true
|
|
||||||
env:
|
|
||||||
global:
|
|
||||||
- CODECOV_TOKEN=$COVERALLS_REPO_TOKEN
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
sources:
|
|
||||||
- george-edison55-precise-backports # cmake 3.2.3 / doxygen 1.8.3
|
|
||||||
packages:
|
packages:
|
||||||
- cmake
|
|
||||||
- cmake-data
|
|
||||||
- lcov
|
- lcov
|
||||||
- curl
|
- curl
|
||||||
|
- xorg-dev
|
||||||
|
- libglu1-mesa-dev
|
||||||
|
|
||||||
|
compiler:
|
||||||
|
- clang
|
||||||
|
- gcc
|
||||||
|
|
||||||
|
script:
|
||||||
|
- mkdir build
|
||||||
|
- cd build
|
||||||
|
- cmake -DUSE_ALLEGRO=OFF -DUSE_PROFILING=OFF -DCOVERALLS=OFF -DCMAKE_BUILD_TYPE=Release ..
|
||||||
|
- cmake --build .
|
||||||
|
- cd ..
|
||||||
|
- mkdir coverage
|
||||||
|
- cd coverage
|
||||||
|
- cmake -DUSE_ALLEGRO=OFF -DUSE_PROFILING=OFF -DCOVERALLS=ON -DCMAKE_BUILD_TYPE=Debug ..
|
||||||
|
- cmake --build .
|
||||||
|
- cmake --build . --target coveralls
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew update ; fi
|
||||||
|
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install glew; fi
|
||||||
|
|
||||||
|
install: true
|
||||||
|
|
||||||
after_success:
|
after_success:
|
||||||
- bash <(curl -s https://codecov.io/bash)
|
- bash <(curl -s https://codecov.io/bash)
|
||||||
|
|||||||
BIN
data/trollburner_demo.nes
Normal file
BIN
data/trollburner_demo.nes
Normal file
Binary file not shown.
2
external/glfw
vendored
2
external/glfw
vendored
Submodule external/glfw updated: 0f488ac286...525ad7bfb8
@@ -29,6 +29,7 @@
|
|||||||
#include <NESCarts.h>
|
#include <NESCarts.h>
|
||||||
#include <os_dependent.h>
|
#include <os_dependent.h>
|
||||||
#include <mappers/manager.h>
|
#include <mappers/manager.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
|
|
||||||
void DumpCartProperties(FILE *out, NesCart * cart)
|
void DumpCartProperties(FILE *out, NesCart * cart)
|
||||||
{
|
{
|
||||||
@@ -57,7 +58,7 @@ int LoadCart(const char *filename, NesCart * cart)
|
|||||||
cart->File = (byte *)LoadFilePtr((char *)filename);
|
cart->File = (byte *)LoadFilePtr((char *)filename);
|
||||||
|
|
||||||
|
|
||||||
if (cart->File == NULL)
|
if ((cart->File == NULL) || (cart->File == MAP_FAILED))
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
sprintf(buffer, "%c%c%c%c", 0x4E, 0x45, 0x53, 0x1A);
|
sprintf(buffer, "%c%c%c%c", 0x4E, 0x45, 0x53, 0x1A);
|
||||||
|
|||||||
68
src/mappersmanager/mappers/unrom512.c
Executable file
68
src/mappersmanager/mappers/unrom512.c
Executable file
@@ -0,0 +1,68 @@
|
|||||||
|
/*
|
||||||
|
* UNROM Mapper - The TI-NESulator Project
|
||||||
|
* unrom.h
|
||||||
|
*
|
||||||
|
* Created by Manoel TRAPIER.
|
||||||
|
* Copyright (c) 2003-2016 986-Studio. All rights reserved.
|
||||||
|
*
|
||||||
|
* $LastChangedDate$
|
||||||
|
* $Author$
|
||||||
|
* $HeadURL$
|
||||||
|
* $Revision$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <ppu/ppu.h>
|
||||||
|
#include "unrom512.h"
|
||||||
|
|
||||||
|
static byte mirroring_set;
|
||||||
|
static byte loaded_vbank;
|
||||||
|
static byte loaded_pbank;
|
||||||
|
static void unrom512_applyValues()
|
||||||
|
{
|
||||||
|
/*if (mirroring_set)
|
||||||
|
{
|
||||||
|
ppu_setMirroring(PPU);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ppu_setMirroring(PPU_MIRROR_VERTICAL);
|
||||||
|
}*/
|
||||||
|
|
||||||
|
//set_vrom_bank_8k(0x0000, loaded_vbank);
|
||||||
|
set_prom_bank_16k(0x8000, loaded_pbank);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void unrom512_MapperWriteHook(byte Addr, byte Value)
|
||||||
|
{
|
||||||
|
mirroring_set = (Value >> 7) & 0x01;
|
||||||
|
loaded_vbank = (Value >> 5) & 0x03;
|
||||||
|
loaded_pbank = (Value ) & 0x1F;
|
||||||
|
|
||||||
|
unrom512_applyValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
int unrom512_InitMapper(NesCart * cart)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
|
||||||
|
loaded_vbank = 0;
|
||||||
|
loaded_pbank = 0;
|
||||||
|
set_prom_bank_16k(0xC000, GETLAST16KBANK(cart));
|
||||||
|
|
||||||
|
unrom512_applyValues();
|
||||||
|
|
||||||
|
/* Register the write hook */
|
||||||
|
for (i = 0x80; i < 0x100; i++)
|
||||||
|
{
|
||||||
|
set_page_wr_hook(i, unrom512_MapperWriteHook);
|
||||||
|
set_page_writeable(i, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void unrom512_MapperDump(FILE *fp)
|
||||||
|
{
|
||||||
|
fprintf(fp,"unrom512: vbank:%d pbank:%d\n", loaded_vbank, loaded_pbank);
|
||||||
|
}
|
||||||
19
src/mappersmanager/mappers/unrom512.h
Executable file
19
src/mappersmanager/mappers/unrom512.h
Executable file
@@ -0,0 +1,19 @@
|
|||||||
|
/*
|
||||||
|
* UNROM Mapper - The TI-NESulator Project
|
||||||
|
* unrom.h
|
||||||
|
*
|
||||||
|
* Created by Manoel TRAPIER.
|
||||||
|
* Copyright (c) 2003-2016 986-Studio. All rights reserved.
|
||||||
|
*
|
||||||
|
* $LastChangedDate$
|
||||||
|
* $Author$
|
||||||
|
* $HeadURL$
|
||||||
|
* $Revision$
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define __TINES_MAPPERS__
|
||||||
|
#include <mappers/manager.h>
|
||||||
|
|
||||||
|
int unrom512_InitMapper(NesCart * cart);
|
||||||
|
void unrom512_MapperDump(FILE *fp);
|
||||||
@@ -18,6 +18,8 @@
|
|||||||
#include "mappers/unrom.h"
|
#include "mappers/unrom.h"
|
||||||
#include "mappers/cnrom.h"
|
#include "mappers/cnrom.h"
|
||||||
|
|
||||||
|
#include "mappers/unrom512.h"
|
||||||
|
|
||||||
#include "mappers/iremh3001.h"
|
#include "mappers/iremh3001.h"
|
||||||
|
|
||||||
#include "mappers/mmc1.h"
|
#include "mappers/mmc1.h"
|
||||||
@@ -32,7 +34,9 @@ Mapper Mappers[] = {
|
|||||||
|
|
||||||
{ 1 , "MMC1", mmc1_InitMapper, norom_MapperIRQ, mmc1_MapperDump },
|
{ 1 , "MMC1", mmc1_InitMapper, norom_MapperIRQ, mmc1_MapperDump },
|
||||||
{ 4 , "MMC3", mmc3_InitMapper, mmc3_MapperIRQ, mmc3_MapperDump },
|
{ 4 , "MMC3", mmc3_InitMapper, mmc3_MapperIRQ, mmc3_MapperDump },
|
||||||
{ 10, "MMC4", mmc4_InitMapper, norom_MapperIRQ, mmc4_MapperDump },
|
{ 10, "MMC4", mmc4_InitMapper, norom_MapperIRQ, mmc4_MapperDump },
|
||||||
|
|
||||||
|
{ 30, "UNROM512", unrom512_InitMapper, norom_MapperIRQ, unrom512_MapperDump },
|
||||||
|
|
||||||
{ 65, "Irem H3001", iremh3001_InitMapper, iremh3001_MapperIRQ, iremh3001_MapperDump },
|
{ 65, "Irem H3001", iremh3001_InitMapper, iremh3001_MapperIRQ, iremh3001_MapperDump },
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,8 @@
|
|||||||
|
|
||||||
#include <os_dependent.h>
|
#include <os_dependent.h>
|
||||||
|
|
||||||
|
#define GLFW_INCLUDE_GLEXT
|
||||||
#include <GLFW/glfw3.h>
|
#include <GLFW/glfw3.h>
|
||||||
//#include <OpenGL/glext.h>
|
|
||||||
|
|
||||||
#include <palette.h>
|
#include <palette.h>
|
||||||
|
|
||||||
@@ -43,10 +43,6 @@ struct GLWindow_t
|
|||||||
int HEIGHT;
|
int HEIGHT;
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef GL_TEXTURE_RECTANGLE_EXT
|
|
||||||
#define GL_TEXTURE_RECTANGLE_EXT GL_TEXTURE_RECTANGLE_NV
|
|
||||||
#endif
|
|
||||||
|
|
||||||
static int window_num = 0;
|
static int window_num = 0;
|
||||||
|
|
||||||
void GLWindowInitEx(GLWindow *g, int w, int h)
|
void GLWindowInitEx(GLWindow *g, int w, int h)
|
||||||
@@ -63,10 +59,10 @@ void GLWindowInit(GLWindow *g)
|
|||||||
|
|
||||||
void ShowScreen(GLWindow *g, int w, int h)
|
void ShowScreen(GLWindow *g, int w, int h)
|
||||||
{
|
{
|
||||||
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, g->videoTexture);
|
glBindTexture(GL_TEXTURE_RECTANGLE, g->videoTexture);
|
||||||
|
|
||||||
// glTexSubImage2D is faster when not using a texture range
|
// glTexSubImage2D is faster when not using a texture range
|
||||||
glTexSubImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, 0, 0, w, h, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, g->videoMemory);
|
glTexSubImage2D(GL_TEXTURE_RECTANGLE, 0, 0, 0, w, h, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, g->videoMemory);
|
||||||
glBegin(GL_QUADS);
|
glBegin(GL_QUADS);
|
||||||
|
|
||||||
glTexCoord2f(0.0f, 0.0f);
|
glTexCoord2f(0.0f, 0.0f);
|
||||||
@@ -104,20 +100,20 @@ void setupGL(GLWindow *g, int w, int h)
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glEnable(GL_TEXTURE_RECTANGLE_EXT);
|
glEnable(GL_TEXTURE_RECTANGLE);
|
||||||
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, g->videoTexture);
|
glBindTexture(GL_TEXTURE_RECTANGLE, g->videoTexture);
|
||||||
|
|
||||||
// glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_NV_EXT, 0, NULL);
|
// glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_NV_EXT, 0, NULL);
|
||||||
|
|
||||||
// glTexParameteri(GL_TEXTURE_RECTANGLE_NV_EXT, GL_TEXTURE_STORAGE_HINT_APPLE , GL_STORAGE_CACHED_APPLE);
|
// glTexParameteri(GL_TEXTURE_RECTANGLE_NV_EXT, GL_TEXTURE_STORAGE_HINT_APPLE , GL_STORAGE_CACHED_APPLE);
|
||||||
// glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
|
// glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
|
||||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||||
|
|
||||||
glTexImage2D(GL_TEXTURE_RECTANGLE_EXT, 0, GL_RGBA, w,
|
glTexImage2D(GL_TEXTURE_RECTANGLE, 0, GL_RGBA, w,
|
||||||
h, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, g->videoMemory);
|
h, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, g->videoMemory);
|
||||||
|
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
@@ -140,7 +136,7 @@ void restoreGL(GLWindow *g, int w, int h)
|
|||||||
glLoadIdentity();
|
glLoadIdentity();
|
||||||
|
|
||||||
glDisable(GL_TEXTURE_2D);
|
glDisable(GL_TEXTURE_2D);
|
||||||
glEnable(GL_TEXTURE_RECTANGLE_EXT);
|
glEnable(GL_TEXTURE_RECTANGLE);
|
||||||
glDisable(GL_DEPTH_TEST);
|
glDisable(GL_DEPTH_TEST);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -169,6 +165,10 @@ void sizeHandler(GLFWwindow* window,int xs,int ys)
|
|||||||
glViewport(0, 0, xs, ys);
|
glViewport(0, 0, xs, ys);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void error_callback(int error, const char* description)
|
||||||
|
{
|
||||||
|
puts(description);
|
||||||
|
}
|
||||||
|
|
||||||
void initDisplay(GLWindow *g)
|
void initDisplay(GLWindow *g)
|
||||||
{
|
{
|
||||||
@@ -178,12 +178,14 @@ void initDisplay(GLWindow *g)
|
|||||||
/// Initialize GLFW
|
/// Initialize GLFW
|
||||||
glfwInit();
|
glfwInit();
|
||||||
|
|
||||||
|
glfwSetErrorCallback(error_callback);
|
||||||
|
|
||||||
// Open screen OpenGL window
|
// Open screen OpenGL window
|
||||||
if( !(g->windows=glfwCreateWindow( g->WIDTH, g->HEIGHT, "Main", NULL, NULL)) )
|
if( !(g->windows=glfwCreateWindow( g->WIDTH, g->HEIGHT, "Main", NULL, NULL)) )
|
||||||
{
|
{
|
||||||
glfwTerminate();
|
glfwTerminate();
|
||||||
fprintf(stderr, "Window creation error...\n");
|
fprintf(stderr, "Window creation error...\n");
|
||||||
return;
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
glfwMakeContextCurrent(g->windows);
|
glfwMakeContextCurrent(g->windows);
|
||||||
@@ -433,4 +435,4 @@ int graphics_blit(long x, long y, long w, long h)
|
|||||||
int getKeyStatus(int key)
|
int getKeyStatus(int key)
|
||||||
{
|
{
|
||||||
return mainWindow.keyArray[key].curState;
|
return mainWindow.keyArray[key].curState;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user