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
|
||||
git:
|
||||
submodule: true
|
||||
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
|
||||
install: true
|
||||
env:
|
||||
global:
|
||||
- CODECOV_TOKEN=$COVERALLS_REPO_TOKEN
|
||||
os:
|
||||
- linux
|
||||
- osx
|
||||
matrix:
|
||||
allow_failures:
|
||||
- os: osx
|
||||
|
||||
addons:
|
||||
apt:
|
||||
sources:
|
||||
- george-edison55-precise-backports # cmake 3.2.3 / doxygen 1.8.3
|
||||
packages:
|
||||
- cmake
|
||||
- cmake-data
|
||||
- lcov
|
||||
- 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:
|
||||
- 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 <os_dependent.h>
|
||||
#include <mappers/manager.h>
|
||||
#include <sys/mman.h>
|
||||
|
||||
void DumpCartProperties(FILE *out, NesCart * cart)
|
||||
{
|
||||
@@ -57,7 +58,7 @@ int LoadCart(const char *filename, NesCart * cart)
|
||||
cart->File = (byte *)LoadFilePtr((char *)filename);
|
||||
|
||||
|
||||
if (cart->File == NULL)
|
||||
if ((cart->File == NULL) || (cart->File == MAP_FAILED))
|
||||
return -1;
|
||||
|
||||
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/cnrom.h"
|
||||
|
||||
#include "mappers/unrom512.h"
|
||||
|
||||
#include "mappers/iremh3001.h"
|
||||
|
||||
#include "mappers/mmc1.h"
|
||||
@@ -32,7 +34,9 @@ Mapper Mappers[] = {
|
||||
|
||||
{ 1 , "MMC1", mmc1_InitMapper, norom_MapperIRQ, mmc1_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 },
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@
|
||||
|
||||
#include <os_dependent.h>
|
||||
|
||||
#define GLFW_INCLUDE_GLEXT
|
||||
#include <GLFW/glfw3.h>
|
||||
//#include <OpenGL/glext.h>
|
||||
|
||||
#include <palette.h>
|
||||
|
||||
@@ -43,10 +43,6 @@ struct GLWindow_t
|
||||
int HEIGHT;
|
||||
};
|
||||
|
||||
#ifndef GL_TEXTURE_RECTANGLE_EXT
|
||||
#define GL_TEXTURE_RECTANGLE_EXT GL_TEXTURE_RECTANGLE_NV
|
||||
#endif
|
||||
|
||||
static int window_num = 0;
|
||||
|
||||
void GLWindowInitEx(GLWindow *g, int w, int h)
|
||||
@@ -63,10 +59,10 @@ void GLWindowInit(GLWindow *g)
|
||||
|
||||
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(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);
|
||||
|
||||
glTexCoord2f(0.0f, 0.0f);
|
||||
@@ -104,20 +100,20 @@ void setupGL(GLWindow *g, int w, int h)
|
||||
glLoadIdentity();
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glEnable(GL_TEXTURE_RECTANGLE_EXT);
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE_EXT, g->videoTexture);
|
||||
glEnable(GL_TEXTURE_RECTANGLE);
|
||||
glBindTexture(GL_TEXTURE_RECTANGLE, g->videoTexture);
|
||||
|
||||
// glTextureRangeAPPLE(GL_TEXTURE_RECTANGLE_NV_EXT, 0, NULL);
|
||||
|
||||
// glTexParameteri(GL_TEXTURE_RECTANGLE_NV_EXT, GL_TEXTURE_STORAGE_HINT_APPLE , GL_STORAGE_CACHED_APPLE);
|
||||
// glPixelStorei(GL_UNPACK_CLIENT_STORAGE_APPLE, GL_TRUE);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE_EXT, 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_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_RECTANGLE, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
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);
|
||||
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
@@ -140,7 +136,7 @@ void restoreGL(GLWindow *g, int w, int h)
|
||||
glLoadIdentity();
|
||||
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glEnable(GL_TEXTURE_RECTANGLE_EXT);
|
||||
glEnable(GL_TEXTURE_RECTANGLE);
|
||||
glDisable(GL_DEPTH_TEST);
|
||||
}
|
||||
|
||||
@@ -169,6 +165,10 @@ void sizeHandler(GLFWwindow* window,int xs,int ys)
|
||||
glViewport(0, 0, xs, ys);
|
||||
}
|
||||
|
||||
static void error_callback(int error, const char* description)
|
||||
{
|
||||
puts(description);
|
||||
}
|
||||
|
||||
void initDisplay(GLWindow *g)
|
||||
{
|
||||
@@ -178,12 +178,14 @@ void initDisplay(GLWindow *g)
|
||||
/// Initialize GLFW
|
||||
glfwInit();
|
||||
|
||||
glfwSetErrorCallback(error_callback);
|
||||
|
||||
// Open screen OpenGL window
|
||||
if( !(g->windows=glfwCreateWindow( g->WIDTH, g->HEIGHT, "Main", NULL, NULL)) )
|
||||
{
|
||||
glfwTerminate();
|
||||
fprintf(stderr, "Window creation error...\n");
|
||||
return;
|
||||
abort();
|
||||
}
|
||||
|
||||
glfwMakeContextCurrent(g->windows);
|
||||
@@ -433,4 +435,4 @@ int graphics_blit(long x, long y, long w, long h)
|
||||
int getKeyStatus(int key)
|
||||
{
|
||||
return mainWindow.keyArray[key].curState;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user