mirror of
https://github.com/mupen64plus/mupen64plus-video-arachnoid.git
synced 2025-04-02 10:42:12 -04:00
Compare commits
113 commits
Author | SHA1 | Date | |
---|---|---|---|
|
5e9ea51064 | ||
|
beebe29996 | ||
|
99515bac6d | ||
|
8187d1135c | ||
|
b69ca81311 | ||
|
4f5f3ba69a | ||
|
7865c767b5 | ||
|
82ab630d29 | ||
|
4e6356c74a | ||
|
52b2909ae6 | ||
|
401bcb1047 | ||
|
244f13d3b9 | ||
|
cdde810024 | ||
|
05f76111c6 | ||
|
3f1b81dc5a | ||
|
578edd1530 | ||
|
20ac6717d6 | ||
|
b0876423c8 | ||
|
5bde6b38b4 | ||
|
7109d57577 | ||
|
87247554f0 | ||
|
fbadbf835e | ||
|
4ff794eab4 | ||
|
e4f190bbaa | ||
|
aff8439a6e | ||
|
82ad6a855e | ||
|
55a685f0ad | ||
|
b35a20cae1 | ||
|
2a79d2832b | ||
|
853bf104f9 | ||
|
96e2e18fce | ||
|
905c61fd30 | ||
|
23e74784d7 | ||
|
911d3b81ec | ||
|
21a43d4b33 | ||
|
b16c1dd9ec | ||
|
aeb663548b | ||
|
d2f459d3c2 | ||
|
7378184970 | ||
|
73b6eccf89 | ||
|
b881e3e7cf | ||
|
19ecbc1f95 | ||
|
03398c7e37 | ||
|
c2a73cfb60 | ||
|
5892aa7cdd | ||
|
08104ee4fd | ||
|
e2746f2d97 | ||
|
876f992074 | ||
|
0bfae1fad5 | ||
|
5722e78303 | ||
|
d49a2b857f | ||
|
dfa22c9899 | ||
|
8d32f2a9cc | ||
|
1ddef24000 | ||
|
8c84c961a4 | ||
|
3a3e2fe240 | ||
|
eb6fe960e7 | ||
|
dc809fd709 | ||
|
b2cc64accf | ||
|
d41ea6ed48 | ||
|
4fbab9cd89 | ||
|
47e650709d | ||
|
0911511a37 | ||
|
ecd1eb677a | ||
|
94441fbc3c | ||
|
cc071fca31 | ||
|
9229129383 | ||
|
93a26045c2 | ||
|
5a741ceb87 | ||
|
59ddf59ef5 | ||
|
19f0840345 | ||
|
13bb765d1f | ||
|
261e633ace | ||
|
c4bfe32cb7 | ||
|
731d96564e | ||
|
742c9915eb | ||
|
e3cc9e9401 | ||
|
a07430f141 | ||
|
52c5abb037 | ||
|
81516dbe8d | ||
|
00c1af5f64 | ||
|
5855e7172d | ||
|
7f5786ffd3 | ||
|
114c7022e5 | ||
|
981d031704 | ||
|
5134c3fbc4 | ||
|
e1e57107b8 | ||
|
716ea561c6 | ||
|
34e39ef822 | ||
|
c5dec6712c | ||
|
72528a62da | ||
|
079c26f78d | ||
|
dbfa9f06e8 | ||
|
ea8b5d77a9 | ||
|
ca722e9f18 | ||
|
6d37963bd6 | ||
|
c64ad4fac1 | ||
|
74893669f2 | ||
|
5301287d88 | ||
|
a33fe09bb2 | ||
|
d93ef1fb11 | ||
|
385261dc4d | ||
|
f71d8ca537 | ||
|
07536b1a27 | ||
|
b52136d9b2 | ||
|
bb33db2b91 | ||
|
bf7e1d26a1 | ||
|
3858dcfd56 | ||
|
ff8532919d | ||
|
70372326a7 | ||
|
e02713fbb1 | ||
|
64e519b3ed | ||
|
cb2f25f530 |
127 changed files with 2450 additions and 2012 deletions
38
.gitattributes
vendored
Normal file
38
.gitattributes
vendored
Normal file
|
@ -0,0 +1,38 @@
|
|||
* text=auto
|
||||
|
||||
# normal text files
|
||||
*.6 text
|
||||
AUTHORS text
|
||||
*.c text
|
||||
*.cfg text
|
||||
*.cht text
|
||||
*.conf text
|
||||
COPYING text
|
||||
*.cpp text
|
||||
*.def text
|
||||
*-license text
|
||||
*.h text
|
||||
*.html text
|
||||
*.ini text
|
||||
INSTALL text
|
||||
LICENSES text
|
||||
Makefile text
|
||||
*.py text
|
||||
README text
|
||||
RELEASE text
|
||||
*.S text
|
||||
*.sh text
|
||||
*.txt text
|
||||
*.ver text
|
||||
|
||||
# windows specific text files
|
||||
*.sln text eol=crlf
|
||||
*.vcproj text eol=crlf
|
||||
*.vcxproj text eol=crlf
|
||||
*.vcxproj.filters text eol=crlf
|
||||
|
||||
# binary files
|
||||
*.gz binary
|
||||
*.ttf binary
|
||||
cursor.tex binary
|
||||
font.tex binary
|
120
.github/workflows/build.yml
vendored
Normal file
120
.github/workflows/build.yml
vendored
Normal file
|
@ -0,0 +1,120 @@
|
|||
name: Arachnoid
|
||||
|
||||
on:
|
||||
push:
|
||||
paths-ignore:
|
||||
- '.{gitattributes,gitignore,travis.yml}'
|
||||
- '*.md,appveyor.yml,README'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- '.{gitattributes,gitignore,travis.yml}'
|
||||
- '*.md,appveyor.yml,README'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
|
||||
Linux:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- cc: GCC
|
||||
arch: x64
|
||||
- cc: GCC
|
||||
arch: x86
|
||||
- cc: Clang
|
||||
arch: x64
|
||||
- cc: Clang
|
||||
arch: x86
|
||||
name: Linux / ${{ matrix.cc }} / ${{ matrix.arch }}
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get build dependencies and arrange the environment
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
|
||||
export BUILD_DEPS="libgl1-mesa-dev"
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }}
|
||||
- name: Build and related stuff, backup binaries
|
||||
run: |
|
||||
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg
|
||||
- name: Upload artifact
|
||||
if: matrix.cc == 'GCC'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.PKG_NAME }}
|
||||
path: pkg/*.tar.gz
|
||||
|
||||
MSYS2:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- cc: GCC
|
||||
arch: x64
|
||||
cross: x86_64
|
||||
env: MINGW64
|
||||
- cc: GCC
|
||||
arch: x86
|
||||
cross: i686
|
||||
env: MINGW32
|
||||
name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.arch }}
|
||||
runs-on: windows-2022
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{ matrix.env }}
|
||||
update: true
|
||||
install: >-
|
||||
git
|
||||
libtool
|
||||
make
|
||||
mingw-w64-${{ matrix.cross }}-gcc
|
||||
mingw-w64-${{ matrix.cross }}-toolchain
|
||||
mingw-w64-${{ matrix.cross }}-ntldd
|
||||
- name: Build and related stuff, backup binaries
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
|
||||
- name: Backup dependencies, etc...
|
||||
run: |
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.PKG_NAME }}
|
||||
path: pkg/*
|
||||
|
||||
Nightly-build:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref_name == 'master'
|
||||
needs: [Linux, MSYS2]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: binaries
|
||||
- name: Get some tools
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install hashdeep
|
||||
- name: Creating new artifacts and update nightly-build
|
||||
run: |
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_nightly_artifacts.sh
|
||||
- name: Nightly-build
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
prerelease: true
|
||||
allowUpdates: true
|
||||
removeArtifacts: true
|
||||
replacesArtifacts: false
|
||||
tag: nightly-build
|
||||
artifacts: pkg/*
|
115
.github/workflows/schedule.yml
vendored
Normal file
115
.github/workflows/schedule.yml
vendored
Normal file
|
@ -0,0 +1,115 @@
|
|||
name: Arachnoid - Scheduled
|
||||
|
||||
on:
|
||||
schedule:
|
||||
- cron: '15 14 21 * *'
|
||||
|
||||
jobs:
|
||||
|
||||
Linux:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- cc: GCC
|
||||
arch: x64
|
||||
- cc: GCC
|
||||
arch: x86
|
||||
- cc: Clang
|
||||
arch: x64
|
||||
- cc: Clang
|
||||
arch: x86
|
||||
name: Linux / ${{ matrix.cc }} / ${{ matrix.arch }}
|
||||
runs-on: ubuntu-22.04
|
||||
if: github.repository == 'mupen64plus/mupen64plus-video-arachnoid'
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Get build dependencies and arrange the environment
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
|
||||
export BUILD_DEPS="libgl1-mesa-dev"
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_install_ubuntu_deps.sh ${{ matrix.arch }} ${{ matrix.cc }}
|
||||
- name: Build and related stuff, backup binaries
|
||||
run: |
|
||||
export C_CLANG_SUFFIX="-15" C_GCC_SUFFIX="-12"
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }} makepkg
|
||||
- name: Upload artifact
|
||||
if: matrix.cc == 'GCC'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.PKG_NAME }}
|
||||
path: pkg/*.tar.gz
|
||||
|
||||
MSYS2:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- cc: GCC
|
||||
arch: x64
|
||||
cross: x86_64
|
||||
env: MINGW64
|
||||
- cc: GCC
|
||||
arch: x86
|
||||
cross: i686
|
||||
env: MINGW32
|
||||
name: Windows / MSYS2 ${{ matrix.cc }} / ${{ matrix.arch }}
|
||||
runs-on: windows-2022
|
||||
if: github.repository == 'mupen64plus/mupen64plus-video-arachnoid'
|
||||
defaults:
|
||||
run:
|
||||
shell: msys2 {0}
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- uses: msys2/setup-msys2@v2
|
||||
with:
|
||||
msystem: ${{ matrix.env }}
|
||||
update: true
|
||||
install: >-
|
||||
git
|
||||
libtool
|
||||
make
|
||||
mingw-w64-${{ matrix.cross }}-gcc
|
||||
mingw-w64-${{ matrix.cross }}-toolchain
|
||||
mingw-w64-${{ matrix.cross }}-ntldd
|
||||
- name: Build and related stuff, backup binaries
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_build.sh ${{ matrix.arch }} ${{ matrix.cc }}
|
||||
- name: Backup dependencies, etc...
|
||||
run: |
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_backup_mingw_deps.sh ${{ matrix.env }}
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.PKG_NAME }}
|
||||
path: pkg/*
|
||||
|
||||
Nightly-build:
|
||||
runs-on: ubuntu-latest
|
||||
if: github.ref_name == 'master'
|
||||
needs: [Linux, MSYS2]
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Download artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
with:
|
||||
path: binaries
|
||||
- name: Get some tools
|
||||
run: |
|
||||
git clone --depth 1 https://github.com/mupen64plus/mupen64plus-core.git ../mupen64plus-core
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install hashdeep
|
||||
- name: Creating new artifacts and update nightly-build
|
||||
run: |
|
||||
./../mupen64plus-core/.github/workflows/scripts/ci_nightly_artifacts.sh
|
||||
- name: Nightly-build
|
||||
uses: ncipollo/release-action@v1
|
||||
with:
|
||||
prerelease: true
|
||||
allowUpdates: true
|
||||
removeArtifacts: true
|
||||
replacesArtifacts: false
|
||||
tag: nightly-build
|
||||
artifacts: pkg/*
|
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
@ -0,0 +1,2 @@
|
|||
/projects/unix/_obj*/
|
||||
/projects/unix/mupen64plus-video-arachnoid*.so
|
45
.travis.yml
Normal file
45
.travis.yml
Normal file
|
@ -0,0 +1,45 @@
|
|||
sudo: required
|
||||
dist: xenial
|
||||
language: cpp
|
||||
compiler:
|
||||
- gcc
|
||||
- clang
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
- git
|
||||
- libgl1-mesa-dev
|
||||
- pkg-config
|
||||
before_install:
|
||||
- git clone --depth=1 --branch=master git://github.com/mupen64plus/mupen64plus-core.git deps/mupen64plus-core
|
||||
script:
|
||||
- make -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 clean && LDFLAGS="-Wl,--no-add-needed -Wl,--no-undefined" OPTFLAGS="-O2" make CC="${CC}" CXX="${CXX}" -j$(nproc) -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 all
|
||||
|
||||
# extra mxe build entries
|
||||
matrix:
|
||||
include:
|
||||
- env:
|
||||
- MXE_CPU=i686
|
||||
- PATH="/usr/lib/mxe/usr/bin/:$PATH"
|
||||
before_install:
|
||||
- curl -sSL "https://mirror.mxe.cc/repos/apt/client-conf/mxeapt.gpg" | sudo -E apt-key add -
|
||||
- echo "deb https://mirror.mxe.cc/repos/apt xenial main" | sudo tee -a /etc/apt/sources.list
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get -y --allow-unauthenticated install mxe-i686-w64-mingw32.shared-gcc
|
||||
- git clone --depth=1 --branch=master git://github.com/mupen64plus/mupen64plus-core.git deps/mupen64plus-core
|
||||
script:
|
||||
- make UNAME=MINGW CROSS_COMPILE="${MXE_CPU}-w64-mingw32.shared-" CC="${MXE_CPU}-w64-mingw32.shared-gcc" CXX="${MXE_CPU}-w64-mingw32.shared-g++" HOST_CPU="${MXE_CPU}" -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 clean &&
|
||||
make UNAME=MINGW CROSS_COMPILE="${MXE_CPU}-w64-mingw32.shared-" CC="${MXE_CPU}-w64-mingw32.shared-gcc" CXX="${MXE_CPU}-w64-mingw32.shared-g++" HOST_CPU="${MXE_CPU}" -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 -j$(nproc) all
|
||||
|
||||
- env:
|
||||
- MXE_CPU=x86_64
|
||||
- PATH="/usr/lib/mxe/usr/bin/:$PATH"
|
||||
before_install:
|
||||
- curl -sSL "https://mirror.mxe.cc/repos/apt/client-conf/mxeapt.gpg" | sudo -E apt-key add -
|
||||
- echo "deb https://mirror.mxe.cc/repos/apt xenial main" | sudo tee -a /etc/apt/sources.list
|
||||
- sudo apt-get update -qq
|
||||
- sudo apt-get -y --allow-unauthenticated install mxe-x86-64-w64-mingw32.shared-gcc
|
||||
- git clone --depth=1 --branch=master git://github.com/mupen64plus/mupen64plus-core.git deps/mupen64plus-core
|
||||
script:
|
||||
- make UNAME=MINGW CROSS_COMPILE="${MXE_CPU}-w64-mingw32.shared-" CC="${MXE_CPU}-w64-mingw32.shared-gcc" CXX="${MXE_CPU}-w64-mingw32.shared-g++" HOST_CPU="${MXE_CPU}" -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 clean &&
|
||||
make UNAME=MINGW CROSS_COMPILE="${MXE_CPU}-w64-mingw32.shared-" CC="${MXE_CPU}-w64-mingw32.shared-gcc" CXX="${MXE_CPU}-w64-mingw32.shared-g++" HOST_CPU="${MXE_CPU}" -C projects/unix APIDIR="$(pwd)/deps/mupen64plus-core/src/api/" V=1 -j$(nproc) all
|
2
README
2
README
|
@ -1,5 +1,5 @@
|
|||
Arachnoid Graphics Plugin for Mupen64Plus
|
||||
http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
|
||||
Derived from the Project64/1964 version of Arachnoid, available from:
|
||||
http://sourceforge.net/projects/arachnoid/
|
||||
|
|
0
projects/msvc9/GraphicsPlugin.sln
Executable file → Normal file
0
projects/msvc9/GraphicsPlugin.sln
Executable file → Normal file
2
projects/msvc9/GraphicsPlugin.vcproj
Executable file → Normal file
2
projects/msvc9/GraphicsPlugin.vcproj
Executable file → Normal file
|
@ -64,6 +64,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="opengl32.lib"
|
||||
OutputFile="mupen64plus-video-arachnoid.dll"
|
||||
LinkIncremental="2"
|
||||
GenerateDebugInformation="true"
|
||||
|
@ -142,6 +143,7 @@
|
|||
/>
|
||||
<Tool
|
||||
Name="VCLinkerTool"
|
||||
AdditionalDependencies="opengl32.lib"
|
||||
OutputFile="mupen64plus-video-arachnoid.dll"
|
||||
LinkIncremental="1"
|
||||
GenerateDebugInformation="true"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
# * Arachnoid - Makefile *
|
||||
# * http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/ *
|
||||
# * https://github.com/mupen64plus/mupen64plus-video-arachnoid/ *
|
||||
# * Copyright (C) 2009 Richard42, Jon Ring *
|
||||
# * *
|
||||
# * This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -20,8 +20,9 @@
|
|||
# * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
# Makefile for mupen64plus-video-arachnoid
|
||||
|
||||
# detect operation system
|
||||
UNAME = $(shell uname -s)
|
||||
# detect operating system
|
||||
UNAME ?= $(shell uname -s)
|
||||
OS := NONE
|
||||
ifeq ("$(UNAME)","Linux")
|
||||
OS = LINUX
|
||||
SO_EXTENSION = so
|
||||
|
@ -39,7 +40,7 @@ ifneq ("$(filter GNU hurd,$(UNAME))","")
|
|||
endif
|
||||
ifeq ("$(UNAME)","Darwin")
|
||||
OS = OSX
|
||||
LDFLAGS += -liconv -lpng
|
||||
LDLIBS += -liconv -lpng
|
||||
SO_EXTENSION = dylib
|
||||
SHARED = -bundle
|
||||
endif
|
||||
|
@ -48,66 +49,154 @@ ifeq ("$(UNAME)","FreeBSD")
|
|||
SO_EXTENSION = so
|
||||
SHARED = -shared
|
||||
endif
|
||||
ifeq ("$(UNAME)","OpenBSD")
|
||||
OS = FREEBSD
|
||||
SO_EXTENSION = so
|
||||
SHARED = -shared
|
||||
endif
|
||||
ifneq ("$(filter GNU/kFreeBSD kfreebsd,$(UNAME))","")
|
||||
OS = LINUX
|
||||
SO_EXTENSION = so
|
||||
SHARED = -shared
|
||||
endif
|
||||
ifeq ("$(patsubst MINGW%,MINGW,$(UNAME))","MINGW")
|
||||
OS = MINGW
|
||||
SO_EXTENSION = dll
|
||||
SHARED = -shared
|
||||
PIC = 0
|
||||
endif
|
||||
ifeq ("$(OS)","NONE")
|
||||
$(error OS type "$(UNAME)" not supported. Please file bug report at 'https://github.com/mupen64plus/mupen64plus-core/issues')
|
||||
endif
|
||||
|
||||
# detect system architecture
|
||||
HOST_CPU ?= $(shell uname -m)
|
||||
CPU := NONE
|
||||
NO_ASM ?= 1
|
||||
ifneq ("$(filter x86_64 amd64,$(HOST_CPU))","")
|
||||
CPU := X86
|
||||
ifeq ("$(BITS)", "32")
|
||||
ARCH_DETECTED := 64BITS_32
|
||||
PIC ?= 0
|
||||
else
|
||||
ARCH_DETECTED := 64BITS
|
||||
PIC ?= 1
|
||||
endif
|
||||
endif
|
||||
ifneq ("$(filter pentium i%86,$(HOST_CPU))","")
|
||||
CPU := X86
|
||||
ARCH_DETECTED := 32BITS
|
||||
PIC ?= 0
|
||||
endif
|
||||
ifneq ("$(filter ppc powerpc,$(HOST_CPU))","")
|
||||
ifneq ("$(filter ppc macppc socppc powerpc,$(HOST_CPU))","")
|
||||
CPU := PPC
|
||||
ARCH_DETECTED := 32BITS
|
||||
BIG_ENDIAN := 1
|
||||
PIC ?= 1
|
||||
$(warning Architecture "$(HOST_CPU)" not officially supported.')
|
||||
endif
|
||||
ifneq ("$(filter ppc64 powerpc64,$(HOST_CPU))","")
|
||||
CPU := PPC
|
||||
ARCH_DETECTED := 64BITS
|
||||
BIG_ENDIAN := 1
|
||||
PIC ?= 1
|
||||
$(warning Architecture "$(HOST_CPU)" not officially supported.')
|
||||
endif
|
||||
ifneq ("$(filter arm%,$(HOST_CPU))","")
|
||||
ifeq ("$(filter arm%b,$(HOST_CPU))","")
|
||||
CPU := ARM
|
||||
ARCH_DETECTED := 32BITS
|
||||
PIC ?= 1
|
||||
$(warning Architecture "$(HOST_CPU)" not officially supported.')
|
||||
endif
|
||||
endif
|
||||
ifeq ("$(CPU)","NONE")
|
||||
$(error CPU type "$(HOST_CPU)" not supported. Please file bug report at 'https://github.com/mupen64plus/mupen64plus-core/issues')
|
||||
endif
|
||||
|
||||
# base CFLAGS, LIBS, and LDFLAGS
|
||||
CFLAGS += -ffast-math -funroll-loops -fexpensive-optimizations -fno-strict-aliasing -fvisibility=hidden -I../../src \
|
||||
SRCDIR = ../../src
|
||||
OBJDIR = _obj$(POSTFIX)
|
||||
|
||||
# base CFLAGS, LDLIBS, and LDFLAGS
|
||||
OPTFLAGS ?= -O3 -flto
|
||||
WARNFLAGS ?= -Wall
|
||||
CFLAGS += $(OPTFLAGS) $(WARNFLAGS) -ffast-math -fno-strict-aliasing -fvisibility=hidden -I../../src \
|
||||
-I../../src/hash -I../../src/ucodes -I../../src/GBI -I../../src/RDP -I../../src/utils \
|
||||
-I../../src/log -I../../src/RSP -I../../src/framebuffer -I../../src/math -I../../src/renderer \
|
||||
-I../../src/Assembler -I../../src/texture -I../../src/config -I../../src/Combiner
|
||||
ifneq ($(OS), FREEBSD)
|
||||
CFLAGS += -pipe -O3
|
||||
endif
|
||||
CXXFLAGS += -fvisibility-inlines-hidden
|
||||
LDFLAGS += $(SHARED)
|
||||
|
||||
# On OS X, add a few extra flags to elegantly support cross-compilation and backward
|
||||
# compatibility (and also the flags to link against OpenGL)
|
||||
ifeq ($(OS), OSX)
|
||||
# Select the proper SDK
|
||||
# Also, SDKs are stored in a different location since XCode 4.3
|
||||
OSX_SDK ?= $(shell sw_vers -productVersion | cut -f1 -f2 -d .)
|
||||
OSX_XCODEMAJ = $(shell xcodebuild -version | grep '[0-9]*\.[0-9]*' | cut -f2 -d ' ' | cut -f1 -d .)
|
||||
OSX_XCODEMIN = $(shell xcodebuild -version | grep '[0-9]*\.[0-9]*' | cut -f2 -d ' ' | cut -f2 -d .)
|
||||
OSX_XCODEGE43 = $(shell echo "`expr $(OSX_XCODEMAJ) \>= 4``expr $(OSX_XCODEMIN) \>= 3`")
|
||||
ifeq ($(OSX_XCODEGE43), 11)
|
||||
OSX_SYSROOT := /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs
|
||||
else
|
||||
OSX_SYSROOT := /Developer/SDKs
|
||||
endif
|
||||
|
||||
ifeq ($(CPU), X86)
|
||||
ifeq ($(ARCH_DETECTED), 64BITS)
|
||||
CFLAGS += -arch x86_64 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
|
||||
LDFLAGS += -bundle -framework OpenGL -arch x86_64 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
|
||||
CFLAGS += -arch x86_64 -mmacosx-version-min=$(OSX_SDK) -isysroot $(OSX_SYSROOT)/MacOSX$(OSX_SDK).sdk
|
||||
LDFLAGS += -bundle
|
||||
else
|
||||
CFLAGS += -arch i686 -mmacosx-version-min=10.5 -isysroot /Developer/SDKs/MacOSX10.5.sdk
|
||||
LDFLAGS += -bundle -framework OpenGL -arch i686 -mmacosx-version-min=10.4 -isysroot /Developer/SDKs/MacOSX10.5.sdk
|
||||
CFLAGS += -arch i686 -mmacosx-version-min=$(OSX_SDK) -isysroot $(OSX_SYSROOT)/MacOSX$(OSX_SDK).sdk
|
||||
LDFLAGS += -bundle
|
||||
endif
|
||||
endif
|
||||
else
|
||||
# flags for other Unices
|
||||
LDFLAGS += -ldl -lGL -lGLU -lpthread
|
||||
# search for OpenGL libraries
|
||||
ifeq ($(OS), OSX)
|
||||
GL_LDLIBS = -framework OpenGL
|
||||
endif
|
||||
ifeq ($(OS), MINGW)
|
||||
GL_LDLIBS = -lopengl32
|
||||
endif
|
||||
|
||||
ifeq ($(origin GL_CFLAGS) $(origin GL_LDLIBS), undefined undefined)
|
||||
ifeq ($(origin PKG_CONFIG), undefined)
|
||||
PKG_CONFIG = $(CROSS_COMPILE)pkg-config
|
||||
ifeq ($(shell which $(PKG_CONFIG) 2>/dev/null),)
|
||||
$(error $(PKG_CONFIG) not found)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(shell $(PKG_CONFIG) --modversion gl 2>/dev/null),)
|
||||
$(error No OpenGL development libraries found!)
|
||||
endif
|
||||
GL_CFLAGS += $(shell $(PKG_CONFIG) --cflags gl)
|
||||
GL_LDLIBS += $(shell $(PKG_CONFIG) --libs gl)
|
||||
endif
|
||||
CFLAGS += $(GL_CFLAGS)
|
||||
LDLIBS += $(GL_LDLIBS)
|
||||
|
||||
CFLAGS += -pthread
|
||||
endif
|
||||
ifeq ($(OS), LINUX)
|
||||
LDLIBS += -ldl
|
||||
endif
|
||||
ifeq ($(OS), FREEBSD)
|
||||
LDLIBS += -lc
|
||||
endif
|
||||
|
||||
|
||||
ifeq ($(ARCH_DETECTED), 64BITS)
|
||||
# Since we are building a shared library, we must compile with -fPIC on some architectures
|
||||
# On 32-bit x86 systems we do not want to use -fPIC because we don't have to and it has a big performance penalty on this arch
|
||||
ifeq ($(PIC), 1)
|
||||
CFLAGS += -fPIC
|
||||
else
|
||||
CFLAGS += -fno-PIC
|
||||
endif
|
||||
|
||||
ifeq ($(BIG_ENDIAN), 1)
|
||||
CFLAGS += -DM64P_BIG_ENDIAN
|
||||
endif
|
||||
|
||||
# set mupen64plus core API header path
|
||||
|
@ -130,65 +219,70 @@ else
|
|||
endif
|
||||
endif
|
||||
|
||||
# tweak flags for 32-bit build on 64-bit system
|
||||
ifeq ($(ARCH_DETECTED), 64BITS_32)
|
||||
ifeq ($(OS), FREEBSD)
|
||||
$(error Do not use the BITS=32 option with FreeBSD, use -m32 and -m elf_i386)
|
||||
endif
|
||||
ifneq ($(OS), OSX)
|
||||
ifeq ($(OS), MINGW)
|
||||
LDFLAGS += -Wl,-m,i386pe
|
||||
else
|
||||
CFLAGS += -m32
|
||||
LDFLAGS += -Wl,-m,elf_i386
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
ifeq ($(ARCH_DETECTED), 64BITS)
|
||||
ifeq ($(OS), MINGW)
|
||||
LDFLAGS += -Wl,-m,i386pep
|
||||
endif
|
||||
endif
|
||||
|
||||
# set special flags per-system
|
||||
ifeq ($(OS), LINUX)
|
||||
# only export api symbols
|
||||
LDFLAGS += -Wl,-version-script,$(SRCDIR)/video_api_export.ver
|
||||
endif
|
||||
ifneq ($(OS), FREEBSD)
|
||||
ifeq ($(CPU), X86)
|
||||
ifeq ($(ARCH_DETECTED), 64BITS)
|
||||
CFLAGS += -march=athlon64
|
||||
else
|
||||
CFLAGS += -mmmx -msse -march=i686 -mtune=pentium-m -fomit-frame-pointer
|
||||
|
||||
# reduced compile output when running make without V=1
|
||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||
ifndef V
|
||||
Q_CC = @echo ' CC '$@;
|
||||
Q_CXX = @echo ' CXX '$@;
|
||||
Q_LD = @echo ' LD '$@;
|
||||
endif
|
||||
# tweak flags for 32-bit build on 64-bit system
|
||||
ifeq ($(ARCH_DETECTED), 64BITS_32)
|
||||
CFLAGS += -m32
|
||||
LDFLAGS += -m32 -m elf_i386
|
||||
endif
|
||||
endif
|
||||
else
|
||||
ifeq ($(ARCH_DETECTED), 64BITS_32)
|
||||
$(error Do not use the BITS=32 option with FreeBSD, use -m32 and -m elf_i386)
|
||||
endif
|
||||
endif
|
||||
ifeq ($(CPU), PPC)
|
||||
CFLAGS += -mcpu=powerpc
|
||||
endif
|
||||
|
||||
# set shell function names
|
||||
# set shell function names
|
||||
CC ?= gcc
|
||||
CXX ?= g++
|
||||
# set base program pointers and flags
|
||||
CC = $(CROSS_COMPILE)gcc
|
||||
CXX = $(CROSS_COMPILE)g++
|
||||
RM ?= rm -f
|
||||
INSTALL ?= install
|
||||
ifeq ($(OS),LINUX)
|
||||
STRIP = strip -s
|
||||
endif
|
||||
ifeq ($(OS),OSX)
|
||||
STRIP = strip -x
|
||||
endif
|
||||
MKDIR ?= mkdir -p
|
||||
COMPILE.c = $(Q_CC)$(CC) $(CFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
|
||||
COMPILE.cc = $(Q_CXX)$(CXX) $(CXXFLAGS) $(CPPFLAGS) $(TARGET_ARCH) -c
|
||||
LINK.o = $(Q_LD)$(CXX) $(CXXFLAGS) $(LDFLAGS) $(TARGET_ARCH)
|
||||
|
||||
# set special flags for given Makefile parameters
|
||||
ifeq ($(DEBUG),1)
|
||||
CFLAGS += -g -fno-inline -Werror
|
||||
STRIP = true # disable binary strip
|
||||
CFLAGS += -g
|
||||
INSTALL_STRIP_FLAG ?=
|
||||
else
|
||||
INSTALL_STRIP_FLAG ?= -s
|
||||
endif
|
||||
|
||||
# set installation options
|
||||
ifeq ($(PREFIX),)
|
||||
PREFIX := /usr/local
|
||||
endif
|
||||
ifeq ($(SHAREDIR),)
|
||||
SHAREDIR := $(PREFIX)/share/mupen64plus
|
||||
endif
|
||||
ifeq ($(LIBDIR),)
|
||||
LIBDIR := $(PREFIX)/lib/mupen64plus
|
||||
LIBDIR := $(PREFIX)/lib
|
||||
endif
|
||||
ifeq ($(PLUGINDIR),)
|
||||
PLUGINDIR := $(LIBDIR)/mupen64plus
|
||||
endif
|
||||
|
||||
|
||||
SRCDIR = ../../src
|
||||
OBJDIR = _obj
|
||||
|
||||
# list of source files to compile
|
||||
SOURCE = \
|
||||
|
@ -242,18 +336,23 @@ SOURCE = \
|
|||
$(SRCDIR)/Combiner/CombinerCache.cpp \
|
||||
$(SRCDIR)/RomDetector.cpp \
|
||||
$(SRCDIR)/RDP/RDP.cpp \
|
||||
$(SRCDIR)/RDP/RDPInstructions.cpp \
|
||||
$(SRCDIR)/osal_dynamiclib_unix.cpp
|
||||
$(SRCDIR)/RDP/RDPInstructions.cpp
|
||||
|
||||
ifeq ($(OS),MINGW)
|
||||
SOURCE += $(SRCDIR)/osal_dynamiclib_win32.cpp
|
||||
else
|
||||
SOURCE += $(SRCDIR)/osal_dynamiclib_unix.cpp
|
||||
endif
|
||||
|
||||
|
||||
# generate a list of object files build, make a temporary directory for them
|
||||
OBJECTS := $(patsubst $(SRCDIR)/%.cpp, $(OBJDIR)/%.o, $(filter %.cpp, $(SOURCE)))
|
||||
OBJDIRS = $(dir $(OBJECTS))
|
||||
$(shell mkdir -p $(OBJDIRS))
|
||||
$(shell $(MKDIR) $(OBJDIRS))
|
||||
|
||||
# build targets
|
||||
|
||||
TARGET = mupen64plus-video-arachnoid.$(SO_EXTENSION)
|
||||
TARGET = mupen64plus-video-arachnoid$(POSTFIX).$(SO_EXTENSION)
|
||||
targets:
|
||||
@echo "Mupen64plus-video-arachnoid N64 Graphics plugin makefile. "
|
||||
@echo " Targets:"
|
||||
|
@ -265,9 +364,14 @@ targets:
|
|||
@echo " Options:"
|
||||
@echo " BITS=32 == build 32-bit binaries on 64-bit machine"
|
||||
@echo " APIDIR=path == path to find Mupen64Plus Core headers"
|
||||
@echo " OPTFLAGS=flag == compiler optimization (default: -O3 -flto)"
|
||||
@echo " WARNFLAGS=flag == compiler warning levels (default: -Wall)"
|
||||
@echo " PIC=(1|0) == Force enable/disable of position independent code"
|
||||
@echo " POSTFIX=name == String added to the name of the the build (default: '')"
|
||||
@echo " Install Options:"
|
||||
@echo " PREFIX=path == install/uninstall prefix (default: /usr/local)"
|
||||
@echo " LIBDIR=path == path to install plugin libraries (default: PREFIX/lib/mupen64plus)"
|
||||
@echo " LIBDIR=path == library prefix (default: PREFIX/lib)"
|
||||
@echo " PLUGINDIR=path == path to install plugin libraries (default: LIBDIR/mupen64plus)"
|
||||
@echo " DESTDIR=path == path to prepend to all installation paths (only for packagers)"
|
||||
@echo " Debugging Options:"
|
||||
@echo " DEBUG=1 == add debugging symbols"
|
||||
|
@ -276,38 +380,30 @@ targets:
|
|||
all: $(TARGET)
|
||||
|
||||
install: $(TARGET)
|
||||
$(INSTALL) -d -v "$(DESTDIR)$(LIBDIR)"
|
||||
$(INSTALL) -m 0644 $(TARGET) "$(DESTDIR)$(LIBDIR)"
|
||||
$(INSTALL) -d "$(DESTDIR)$(PLUGINDIR)"
|
||||
$(INSTALL) -m 0644 $(INSTALL_STRIP_FLAG) $(TARGET) "$(DESTDIR)$(PLUGINDIR)"
|
||||
|
||||
uninstall:
|
||||
rm -f "$(DESTDIR)$(LIBDIR)/$(TARGET)"
|
||||
$(RM) "$(DESTDIR)$(PLUGINDIR)/$(TARGET)"
|
||||
|
||||
|
||||
clean:
|
||||
rm -rf ./_obj mupen64plus-video-arachnoid.$(SO_EXTENSION)
|
||||
$(RM) -r $(OBJDIR) $(TARGET)
|
||||
|
||||
# build dependency files
|
||||
CFLAGS += -MD
|
||||
CFLAGS += -MD -MP
|
||||
-include $(OBJECTS:.o=.d)
|
||||
|
||||
CXXFLAGS += $(CFLAGS)
|
||||
|
||||
# reduced compile output when running make without V=1
|
||||
ifneq ($(findstring $(MAKEFLAGS),s),s)
|
||||
ifndef V
|
||||
Q_CC = @echo ' CC '$@;
|
||||
Q_CXX = @echo ' CXX '$@;
|
||||
Q_LD = @echo ' LD '$@;
|
||||
endif
|
||||
endif
|
||||
|
||||
# build rules
|
||||
$(TARGET): $(OBJECTS)
|
||||
$(Q_LD)$(CXX) $(SHARED) $^ $(LDFLAGS) -o $@
|
||||
$(STRIP) $@
|
||||
|
||||
# standard build rules
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.c
|
||||
$(Q_CC)$(CC) -o $@ $(CFLAGS) -c $<
|
||||
$(COMPILE.c) -o $@ $<
|
||||
|
||||
$(OBJDIR)/%.o: $(SRCDIR)/%.cpp
|
||||
$(Q_CXX)$(CXX) -o $@ $(CXXFLAGS) -c $<
|
||||
$(COMPILE.cc) -o $@ $<
|
||||
|
||||
$(TARGET): $(OBJECTS)
|
||||
$(LINK.o) $^ $(LOADLIBES) $(LDLIBS) -o $@
|
||||
|
||||
.PHONY: all clean install uninstall targets
|
||||
|
|
8
src/Assembler/assembler.h
Executable file → Normal file
8
src/Assembler/assembler.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -33,7 +33,7 @@ inline void swapRomHeaderBytes(void *v, unsigned int dwLen)
|
|||
{
|
||||
int *b = (int*)v;
|
||||
dwLen /= 4;
|
||||
for (int i = 0; i < dwLen; ++i)
|
||||
for (unsigned int i = 0; i < dwLen; ++i)
|
||||
{
|
||||
int tmp = b[i];
|
||||
b[i] = ((tmp & 0xff000000) >> 24) | ((tmp & 0x00ff0000) >> 8) | \
|
||||
|
@ -114,12 +114,12 @@ Done:
|
|||
}
|
||||
#else
|
||||
|
||||
long beginOffset = (long)src & 3;
|
||||
long long beginOffset = (long long)src & 3;
|
||||
char *readPtr = (char*)src - beginOffset;
|
||||
char *writePtr = (char*)dest;
|
||||
|
||||
int swapOffset = beginOffset;
|
||||
for (int i = 0; i < numBytes; ++i)
|
||||
for (unsigned int i = 0; i < numBytes; ++i)
|
||||
{
|
||||
*writePtr = readPtr[3 - swapOffset];
|
||||
++writePtr;
|
||||
|
|
81
src/Combiner/AdvancedCombinerManager.cpp
Executable file → Normal file
81
src/Combiner/AdvancedCombinerManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -20,17 +20,78 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "AdvancedCombinerManager.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
|
||||
#include "AdvancedTexEnvCombiner.h"
|
||||
#include "SimpleTexEnvCombiner.h"
|
||||
#include "DummyCombiner.h"
|
||||
#include "CombinerStageMerger.h"
|
||||
#include "CombinerBase.h"
|
||||
#include "CombinerStageCreator.h"
|
||||
#include "RomDetector.h"
|
||||
#include "m64p.h"
|
||||
#include "CombinerStageMerger.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "DummyCombiner.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "OpenGL.h"
|
||||
#include "RomDetector.h"
|
||||
#include "SimpleTexEnvCombiner.h"
|
||||
#include "m64p.h"
|
||||
|
||||
static int saRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, CB_ONE, NOISE,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO
|
||||
};
|
||||
|
||||
static int sbRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, CENTER, K4,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO
|
||||
};
|
||||
|
||||
static int mRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, SCALE, COMBINED_ALPHA,
|
||||
TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA, SHADE_ALPHA,
|
||||
ENV_ALPHA, LOD_FRACTION, PRIM_LOD_FRAC, K5,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO,
|
||||
CB_ZERO, CB_ZERO, CB_ZERO, CB_ZERO
|
||||
};
|
||||
|
||||
static int aRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, CB_ONE, CB_ZERO
|
||||
};
|
||||
|
||||
static int saAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, CB_ONE, CB_ZERO
|
||||
};
|
||||
|
||||
static int sbAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, CB_ONE, CB_ZERO
|
||||
};
|
||||
|
||||
static int mAExpanded[] =
|
||||
{
|
||||
LOD_FRACTION, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, PRIM_LOD_FRAC, CB_ZERO,
|
||||
};
|
||||
|
||||
static int aAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, CB_ONE, CB_ZERO
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
@ -256,7 +317,7 @@ void AdvancedCombinerManager::getSecondaryCombinerColor(float out[4])
|
|||
}
|
||||
|
||||
//Get color
|
||||
m_combiner->getCombinerColor(out, currentTexEnv->vertex.secondaryColor, ONE);
|
||||
m_combiner->getCombinerColor(out, currentTexEnv->vertex.secondaryColor, CB_ONE);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
16
src/Combiner/AdvancedCombinerManager.h
Executable file → Normal file
16
src/Combiner/AdvancedCombinerManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,18 +22,18 @@
|
|||
#ifndef ADVANCED_COMBINER_MANAGER_H_
|
||||
#define ADVANCED_COMBINER_MANAGER_H_
|
||||
|
||||
#include "GBIDefs.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "CombinerCache.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "GBIDefs.h"
|
||||
|
||||
//Forward declarations
|
||||
struct TexEnvCombiner;
|
||||
struct CombineCycle;
|
||||
struct CombinerStage;
|
||||
struct Combiner;
|
||||
class AdvancedTexEnvCombiner;
|
||||
class CombinerCache;
|
||||
class CombinerBase;
|
||||
class CombinerCache;
|
||||
struct CombineCycle;
|
||||
struct Combiner;
|
||||
struct CombinerStage;
|
||||
struct TexEnvCombiner;
|
||||
|
||||
//*****************************************************************************
|
||||
//! Advanced Texture Environment Combiner
|
||||
|
|
66
src/Combiner/AdvancedTexEnvCombiner.cpp
Executable file → Normal file
66
src/Combiner/AdvancedTexEnvCombiner.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -20,11 +20,12 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
using std::max;
|
||||
#include "AdvancedTexEnvCombiner.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "MultiTexturingExt.h" //glActiveTextureARB
|
||||
#include "ExtensionChecker.h"
|
||||
#include "MultiTexturingExt.h" //glActiveTextureARB
|
||||
|
||||
#ifndef GL_ATI_texture_env_combine3
|
||||
#define GL_ATI_texture_env_combine3
|
||||
|
@ -41,6 +42,52 @@ using std::max;
|
|||
#define GL_TEXTURE_OUTPUT_ALPHA_ATIX 0x8749
|
||||
#endif // GL_ATIX_texture_env_route
|
||||
|
||||
static TexEnvCombinerArg TexEnvArgs[] =
|
||||
{
|
||||
// CMB
|
||||
{ GL_PREVIOUS_ARB, GL_SRC_COLOR },
|
||||
// T0
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// T1
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// PRIM
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// SHADE
|
||||
{ GL_PRIMARY_COLOR_ARB, GL_SRC_COLOR },
|
||||
// ENV
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CENTER
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// SCALE
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CMBALPHA
|
||||
{ GL_PREVIOUS_ARB, GL_SRC_ALPHA },
|
||||
// T0ALPHA
|
||||
{ GL_TEXTURE, GL_SRC_ALPHA },
|
||||
// T1ALPHA
|
||||
{ GL_TEXTURE, GL_SRC_ALPHA },
|
||||
// PRIMALPHA
|
||||
{ GL_CONSTANT_ARB, GL_SRC_ALPHA },
|
||||
// SHADEALPHA
|
||||
{ GL_PRIMARY_COLOR_ARB, GL_SRC_ALPHA },
|
||||
// ENVALPHA
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// LODFRAC
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// PRIMLODFRAC
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// NOISE
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// K4
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// K5
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CB_ONE
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CB_ZERO
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR }
|
||||
};
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -77,8 +124,8 @@ void AdvancedTexEnvCombiner::initialize()
|
|||
|
||||
if ( ATI_texture_env_combine3 )
|
||||
{
|
||||
TexEnvArgs[ONE].source = GL_ONE;
|
||||
TexEnvArgs[ZERO].source = GL_ZERO;
|
||||
TexEnvArgs[CB_ONE].source = GL_ONE;
|
||||
TexEnvArgs[CB_ZERO].source = GL_ZERO;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -186,7 +233,6 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
TexEnvCombiner* envCombiner = new TexEnvCombiner();
|
||||
|
||||
int curUnit;
|
||||
int combinedUnit;
|
||||
|
||||
const int openGLMaxTextureUnits = 8;
|
||||
|
||||
|
@ -228,7 +274,7 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
sb = m_primColor[3];
|
||||
else if (alphaCombiner->stage[i].op[j].param1 == ENV_ALPHA)
|
||||
sb = m_envColor[3];
|
||||
else if (alphaCombiner->stage[i].op[j].param1 == ONE)
|
||||
else if (alphaCombiner->stage[i].op[j].param1 == CB_ONE)
|
||||
sb = 1.0f;
|
||||
|
||||
if (((alphaCombiner->stage[i].numOps - j) >= 3) &&
|
||||
|
@ -241,7 +287,7 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
envCombiner->usesT0 |= alphaCombiner->stage[i].op[j].param1 == TEXEL0_ALPHA;
|
||||
envCombiner->usesT1 |= alphaCombiner->stage[i].op[j].param1 == TEXEL1_ALPHA;
|
||||
|
||||
if (alphaCombiner->stage[i].op[j].param1 == ONE)
|
||||
if (alphaCombiner->stage[i].op[j].param1 == CB_ONE)
|
||||
{
|
||||
SetAlphaCombinerValues( curUnit, arg0, envCombiner->alpha[curUnit].arg0.source, GL_ONE_MINUS_SRC_ALPHA );
|
||||
}
|
||||
|
@ -297,7 +343,7 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
(alphaCombiner->stage[i].op[j].param1 == TEXEL1_ALPHA) && (curUnit == 0))
|
||||
curUnit++;
|
||||
|
||||
if ((j > 0) && (alphaCombiner->stage[i].op[j-1].op == LOAD) && (alphaCombiner->stage[i].op[j-1].param1 == ONE))
|
||||
if ((j > 0) && (alphaCombiner->stage[i].op[j-1].op == LOAD) && (alphaCombiner->stage[i].op[j-1].param1 == CB_ONE))
|
||||
{
|
||||
SetAlphaCombinerArg( curUnit, arg0, alphaCombiner->stage[i].op[j].param1 );
|
||||
envCombiner->alpha[curUnit].arg0.operand = GL_ONE_MINUS_SRC_ALPHA;
|
||||
|
@ -361,7 +407,6 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
}
|
||||
}
|
||||
}
|
||||
combinedUnit = max( curUnit - 1, 0 );
|
||||
}
|
||||
|
||||
envCombiner->usedUnits = max( curUnit, 1 );
|
||||
|
@ -437,7 +482,7 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
((colorCombiner->stage[i].op[j].param1 == TEXEL1) || (colorCombiner->stage[i].op[j].param1 == TEXEL1_ALPHA)) && (curUnit == 0))
|
||||
curUnit++;
|
||||
|
||||
if ((j > 0) && (colorCombiner->stage[i].op[j-1].op == LOAD) && (colorCombiner->stage[i].op[j-1].param1 == ONE))
|
||||
if ((j > 0) && (colorCombiner->stage[i].op[j-1].op == LOAD) && (colorCombiner->stage[i].op[j-1].param1 == CB_ONE))
|
||||
{
|
||||
SetColorCombinerArg( curUnit, arg0, colorCombiner->stage[i].op[j].param1 );
|
||||
envCombiner->color[curUnit].arg0.operand = GL_ONE_MINUS_SRC_COLOR;
|
||||
|
@ -534,7 +579,6 @@ TexEnvCombiner* AdvancedTexEnvCombiner::createNewTextureEnviroment(Combiner* col
|
|||
}
|
||||
}
|
||||
}
|
||||
combinedUnit = max( curUnit - 1, 0 );
|
||||
}
|
||||
|
||||
envCombiner->usedUnits = max( (unsigned short)curUnit, envCombiner->usedUnits );
|
||||
|
|
49
src/Combiner/AdvancedTexEnvCombiner.h
Executable file → Normal file
49
src/Combiner/AdvancedTexEnvCombiner.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -25,6 +25,7 @@
|
|||
#include "CombinerBase.h"
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
class AdvancedTexEnvCombiner;
|
||||
struct TexEnvCombiner;
|
||||
|
||||
#ifndef GL_ARB_texture_env_combine
|
||||
|
@ -54,52 +55,6 @@ struct TexEnvCombiner;
|
|||
#define GL_SUBTRACT_ARB 0x84E7
|
||||
#endif
|
||||
|
||||
static TexEnvCombinerArg TexEnvArgs[] =
|
||||
{
|
||||
// CMB
|
||||
{ GL_PREVIOUS_ARB, GL_SRC_COLOR },
|
||||
// T0
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// T1
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// PRIM
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// SHADE
|
||||
{ GL_PRIMARY_COLOR_ARB, GL_SRC_COLOR },
|
||||
// ENV
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CENTER
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// SCALE
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// CMBALPHA
|
||||
{ GL_PREVIOUS_ARB, GL_SRC_ALPHA },
|
||||
// T0ALPHA
|
||||
{ GL_TEXTURE, GL_SRC_ALPHA },
|
||||
// T1ALPHA
|
||||
{ GL_TEXTURE, GL_SRC_ALPHA },
|
||||
// PRIMALPHA
|
||||
{ GL_CONSTANT_ARB, GL_SRC_ALPHA },
|
||||
// SHADEALPHA
|
||||
{ GL_PRIMARY_COLOR_ARB, GL_SRC_ALPHA },
|
||||
// ENVALPHA
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// LODFRAC
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// PRIMLODFRAC
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// NOISE
|
||||
{ GL_TEXTURE, GL_SRC_COLOR },
|
||||
// K4
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// K5
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// ONE
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR },
|
||||
// ZERO
|
||||
{ GL_CONSTANT_ARB, GL_SRC_COLOR }
|
||||
};
|
||||
|
||||
#define SetColorCombinerValues( n, a, s, o ) \
|
||||
envCombiner->color[n].a.source = s; \
|
||||
envCombiner->color[n].a.operand = o
|
||||
|
|
21
src/Combiner/CombinerBase.cpp
Executable file → Normal file
21
src/Combiner/CombinerBase.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -20,6 +20,7 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "CombinerBase.h"
|
||||
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -31,8 +32,6 @@ CombinerBase::CombinerBase()
|
|||
m_fillColor[1] = m_blendColor[1] = m_primColor[1] = m_envColor[1] = 0;
|
||||
m_fillColor[2] = m_blendColor[2] = m_primColor[2] = m_envColor[2] = 0;
|
||||
m_fillColor[3] = m_blendColor[3] = m_primColor[3] = m_envColor[3] = 1;
|
||||
m_fillColor[4] = 0;
|
||||
m_fillColor[5] = 0;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -111,14 +110,14 @@ void CombinerBase::setEnvColor(float r, float g, float b, float a)
|
|||
//! \arg \c PRIMITIVE_ALPHA Get color from primatives alpha value
|
||||
//! \arg \c ENV_ALPHA Get color from environment colors alpha value
|
||||
//! \arg \c PRIM_LOD_FRAC Get color from primative-LOD-frac value
|
||||
//! \arg \c ONE Get white color
|
||||
//! \arg \c ZERO Get black color
|
||||
//! \arg \c CB_ONE Get white color
|
||||
//! \arg \c CB_ZERO Get black color
|
||||
//! @param[in] alphaSource From which alphasource to retrive alpha value
|
||||
//! \arg \c PRIMITIVE_ALPHA Get alpha value from primitive colors alpha value
|
||||
//! \arg \c ENV_ALPHA Get alpha value from environment colors alpha value
|
||||
//! \arg \c PRIM_LOD_FRAC Get alpha value from primative-LOD-frac value
|
||||
//! \arg \c ONE Set alpha value to 1.0
|
||||
//! \arg \c ZERO Set alpha value to 0.0
|
||||
//! \arg \c CB_ONE Set alpha value to 1.0
|
||||
//! \arg \c CB_ZERO Set alpha value to 0.0
|
||||
//! @param[out] out The combiner color with color and alpha value
|
||||
//-----------------------------------------------------------------------------
|
||||
void CombinerBase::getCombinerColor(float out[4], short colorSrc, short alphaSrc)
|
||||
|
@ -151,12 +150,12 @@ void CombinerBase::getCombinerColor(float out[4], short colorSrc, short alphaSrc
|
|||
out[1] = m_primLodFrac;
|
||||
out[2] = m_primLodFrac;
|
||||
break;
|
||||
case ONE:
|
||||
case CB_ONE:
|
||||
out[0] = 1.0f;
|
||||
out[1] = 1.0f;
|
||||
out[2] = 1.0f;
|
||||
break;
|
||||
case ZERO:
|
||||
case CB_ZERO:
|
||||
out[0] = 0.0f;
|
||||
out[1] = 0.0f;
|
||||
out[2] = 0.0f;
|
||||
|
@ -175,10 +174,10 @@ void CombinerBase::getCombinerColor(float out[4], short colorSrc, short alphaSrc
|
|||
case PRIM_LOD_FRAC:
|
||||
out[3] = m_primLodFrac;
|
||||
break;
|
||||
case ONE:
|
||||
case CB_ONE:
|
||||
out[3] = 1.0f;
|
||||
break;
|
||||
case ZERO:
|
||||
case CB_ZERO:
|
||||
out[3] = 0.0f;
|
||||
break;
|
||||
}
|
||||
|
|
2
src/Combiner/CombinerBase.h
Executable file → Normal file
2
src/Combiner/CombinerBase.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
4
src/Combiner/CombinerCache.cpp
Executable file → Normal file
4
src/Combiner/CombinerCache.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -21,6 +21,8 @@
|
|||
|
||||
#include "CombinerCache.h"
|
||||
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* New Compiled Combiner
|
||||
//! Function used to add decoded mux values and the result of them to the list.
|
||||
|
|
7
src/Combiner/CombinerCache.h
Executable file → Normal file
7
src/Combiner/CombinerCache.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,9 +22,12 @@
|
|||
#ifndef COMBINER_CACHE_H_
|
||||
#define COMBINER_CACHE_H_
|
||||
|
||||
#include "CombinerStructs.h"
|
||||
#include <list>
|
||||
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
struct TexEnvCombiner;
|
||||
|
||||
//*****************************************************************************
|
||||
//* Cached Combiner
|
||||
//! Struct used to store decoded mux values and the result of them
|
||||
|
|
20
src/Combiner/CombinerStageCreator.cpp
Executable file → Normal file
20
src/Combiner/CombinerStageCreator.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -28,6 +28,8 @@
|
|||
|
||||
#include "CombinerStageCreator.h"
|
||||
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Set Stage
|
||||
//! Function used to set combiner stage, tries to simplify and optimize as
|
||||
|
@ -44,10 +46,10 @@ void setStage(CombineCycle* combineCycle, CombinerStage* stageOut)
|
|||
stageOut->numOps = 1;
|
||||
|
||||
// If we're just subtracting zero, skip it
|
||||
if (combineCycle->subValue != ZERO)
|
||||
if (combineCycle->subValue != CB_ZERO)
|
||||
{
|
||||
if (combineCycle->subValue == stageOut->op[0].param1)
|
||||
stageOut->op[0].param1 = ZERO;
|
||||
stageOut->op[0].param1 = CB_ZERO;
|
||||
else
|
||||
{
|
||||
//Subract operation
|
||||
|
@ -58,17 +60,17 @@ void setStage(CombineCycle* combineCycle, CombinerStage* stageOut)
|
|||
}
|
||||
|
||||
//Multiply operation
|
||||
if ((stageOut->numOps > 1) || (stageOut->op[0].param1 != ZERO))
|
||||
if ((stageOut->numOps > 1) || (stageOut->op[0].param1 != CB_ZERO))
|
||||
{
|
||||
if (combineCycle->multValue == ZERO)
|
||||
if (combineCycle->multValue == CB_ZERO)
|
||||
{
|
||||
stageOut->numOps = 1;
|
||||
stageOut->op[0].op = LOAD;
|
||||
stageOut->op[0].param1 = ZERO;
|
||||
stageOut->op[0].param1 = CB_ZERO;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( stageOut->numOps == 1 && stageOut->op[0].param1 == ONE )
|
||||
if ( stageOut->numOps == 1 && stageOut->op[0].param1 == CB_ONE )
|
||||
{
|
||||
//LOAD
|
||||
stageOut->op[0].param1 = combineCycle->multValue;
|
||||
|
@ -84,10 +86,10 @@ void setStage(CombineCycle* combineCycle, CombinerStage* stageOut)
|
|||
}
|
||||
|
||||
//Don't bother adding zero
|
||||
if (combineCycle->addValue != ZERO)
|
||||
if (combineCycle->addValue != CB_ZERO)
|
||||
{
|
||||
// If all we have so far is zero, then load this instead
|
||||
if ((stageOut->numOps == 1) && (stageOut->op[0].param1 == ZERO))
|
||||
if ((stageOut->numOps == 1) && (stageOut->op[0].param1 == CB_ZERO))
|
||||
{
|
||||
stageOut->op[0].param1 = combineCycle->addValue;
|
||||
}
|
||||
|
|
5
src/Combiner/CombinerStageCreator.h
Executable file → Normal file
5
src/Combiner/CombinerStageCreator.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -24,6 +24,9 @@
|
|||
|
||||
#include "CombinerStructs.h"
|
||||
|
||||
struct CombineCycle;
|
||||
struct CombinerStage;
|
||||
|
||||
//Function used to set combiner stage
|
||||
void setStage(CombineCycle* combineCycle, CombinerStage* stageOut);
|
||||
|
||||
|
|
2
src/Combiner/CombinerStageMerger.cpp
Executable file → Normal file
2
src/Combiner/CombinerStageMerger.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
2
src/Combiner/CombinerStageMerger.h
Executable file → Normal file
2
src/Combiner/CombinerStageMerger.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
65
src/Combiner/CombinerStructs.h
Executable file → Normal file
65
src/Combiner/CombinerStructs.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,8 +22,8 @@
|
|||
#ifndef COMBINER_STRUCTS_H_
|
||||
#define COMBINER_STRUCTS_H_
|
||||
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
// Internal combiner commands
|
||||
#define LOAD 0
|
||||
|
@ -53,8 +53,8 @@
|
|||
#define NOISE 16
|
||||
#define K4 17
|
||||
#define K5 18
|
||||
#define ONE 19
|
||||
#define ZERO 20
|
||||
#define CB_ONE 19
|
||||
#define CB_ZERO 20
|
||||
|
||||
//* Combiner data
|
||||
//! Defines how mux-values are coded.
|
||||
|
@ -127,63 +127,6 @@ struct CombineCycle
|
|||
int multValue; //!< Multiplication
|
||||
};
|
||||
|
||||
static int saRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, ONE, NOISE,
|
||||
ZERO, ZERO, ZERO, ZERO,
|
||||
ZERO, ZERO, ZERO, ZERO
|
||||
};
|
||||
|
||||
static int sbRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, CENTER, K4,
|
||||
ZERO, ZERO, ZERO, ZERO,
|
||||
ZERO, ZERO, ZERO, ZERO
|
||||
};
|
||||
|
||||
static int mRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, SCALE, COMBINED_ALPHA,
|
||||
TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA, SHADE_ALPHA,
|
||||
ENV_ALPHA, LOD_FRACTION, PRIM_LOD_FRAC, K5,
|
||||
ZERO, ZERO, ZERO, ZERO,
|
||||
ZERO, ZERO, ZERO, ZERO,
|
||||
ZERO, ZERO, ZERO, ZERO,
|
||||
ZERO, ZERO, ZERO, ZERO
|
||||
};
|
||||
|
||||
static int aRGBExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0, TEXEL1, PRIMITIVE,
|
||||
SHADE, ENVIRONMENT, ONE, ZERO
|
||||
};
|
||||
|
||||
static int saAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, ONE, ZERO
|
||||
};
|
||||
|
||||
static int sbAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, ONE, ZERO
|
||||
};
|
||||
|
||||
static int mAExpanded[] =
|
||||
{
|
||||
LOD_FRACTION, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, PRIM_LOD_FRAC, ZERO,
|
||||
};
|
||||
|
||||
static int aAExpanded[] =
|
||||
{
|
||||
COMBINED, TEXEL0_ALPHA, TEXEL1_ALPHA, PRIMITIVE_ALPHA,
|
||||
SHADE_ALPHA, ENV_ALPHA, ONE, ZERO
|
||||
};
|
||||
|
||||
//*****************************************************************************
|
||||
//! Texture Environment Combiner Argument
|
||||
|
|
4
src/Combiner/DummyCombiner.cpp
Executable file → Normal file
4
src/Combiner/DummyCombiner.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,8 +19,8 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "DummyCombiner.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "DummyCombiner.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
|
||||
|
|
2
src/Combiner/DummyCombiner.h
Executable file → Normal file
2
src/Combiner/DummyCombiner.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
12
src/Combiner/SimpleTexEnvCombiner.cpp
Executable file → Normal file
12
src/Combiner/SimpleTexEnvCombiner.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,12 +19,12 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "SimpleTexEnvCombiner.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "m64p.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "OpenGL.h"
|
||||
#include "SimpleTexEnvCombiner.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
@ -172,7 +172,7 @@ TexEnvCombiner* SimpleTexEnvCombiner::createNewTextureEnviroment(Combiner* color
|
|||
if (op->param1 == TEXEL0 || op->param1 == TEXEL0_ALPHA)
|
||||
{
|
||||
if ( mode == GL_MODULATE )
|
||||
m_color = ONE;
|
||||
m_color = CB_ONE;
|
||||
|
||||
m_usesTexture0 = true;
|
||||
m_usesTexture1 = false;
|
||||
|
@ -180,7 +180,7 @@ TexEnvCombiner* SimpleTexEnvCombiner::createNewTextureEnviroment(Combiner* color
|
|||
else if ( op->param1 == TEXEL1 || op->param1 == TEXEL1_ALPHA )
|
||||
{
|
||||
if ( mode == GL_MODULATE )
|
||||
m_color = ONE;
|
||||
m_color = CB_ONE;
|
||||
|
||||
m_usesTexture0 = false;
|
||||
m_usesTexture1 = true;
|
||||
|
|
9
src/Combiner/SimpleTexEnvCombiner.h
Executable file → Normal file
9
src/Combiner/SimpleTexEnvCombiner.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,14 +22,15 @@
|
|||
#ifndef SIMPLE_TEX_ENV_COMBINER_H_
|
||||
#define SIMPLE_TEX_ENV_COMBINER_H_
|
||||
|
||||
#include "GBIDefs.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "CombinerBase.h"
|
||||
#include "CombinerStructs.h"
|
||||
#include "GBIDefs.h"
|
||||
|
||||
//Forward declarations
|
||||
struct CombineCycle;
|
||||
struct CombinerStage;
|
||||
struct Combiner;
|
||||
struct CombinerStage;
|
||||
struct TexEnvCombiner;
|
||||
|
||||
//*****************************************************************************
|
||||
//! Simple Texture Environment Combiner
|
||||
|
|
12
src/DisplayListParser.cpp
Executable file → Normal file
12
src/DisplayListParser.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -20,12 +20,14 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "DisplayListParser.h"
|
||||
#include "Memory.h"
|
||||
|
||||
#include "GBI.h"
|
||||
#include "RSP.h"
|
||||
#include "RDP.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "Memory.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "UCodeDefs.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Task
|
||||
|
|
2
src/DisplayListParser.h
Executable file → Normal file
2
src/DisplayListParser.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
8
src/ExtensionChecker.cpp
Executable file → Normal file
8
src/ExtensionChecker.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,9 +19,11 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include <string.h>
|
||||
|
||||
#include "ExtensionChecker.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Is Extension Supported
|
||||
|
|
4
src/ExtensionChecker.h
Executable file → Normal file
4
src/ExtensionChecker.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,7 +19,7 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef EXTENSION_CHECKER_H
|
||||
#ifndef EXTENSION_CHECKER_H_
|
||||
#define EXTENSION_CHECKER_H_
|
||||
|
||||
bool isExtensionSupported( const char *extension );
|
||||
|
|
9
src/FogManager.cpp
Executable file → Normal file
9
src/FogManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -20,10 +20,10 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "FogManager.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "m64p.h"
|
||||
#include "FogManager.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -92,7 +92,8 @@ void FogManager::initialize()
|
|||
static bool fogExtensionInitialized = false;
|
||||
if ( !fogExtensionInitialized )
|
||||
{
|
||||
if ( m_fogExtensionsSupported = isExtensionSupported("GL_EXT_fog_coord") )
|
||||
m_fogExtensionsSupported = isExtensionSupported("GL_EXT_fog_coord");
|
||||
if ( m_fogExtensionsSupported )
|
||||
{
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
glFogCoordfEXT = (PFNGLFOGCOORDFEXTPROC)wglGetProcAddress( "glFogCoordfEXT" );
|
||||
|
|
2
src/FogManager.h
Executable file → Normal file
2
src/FogManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
16
src/GBI/GBI.cpp
Executable file → Normal file
16
src/GBI/GBI.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -20,14 +20,18 @@
|
|||
*****************************************************************************/
|
||||
|
||||
#include "GBI.h"
|
||||
|
||||
#include "GBIDefs.h"
|
||||
#include "RSP.h"
|
||||
#include "RDP.h"
|
||||
#include "UCodeSelector.h"
|
||||
#include "UCodeIdentificationData.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "Logger.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "UCodeIdentificationData.h"
|
||||
#include "UCodeSelector.h"
|
||||
#include "m64p.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
class DisplayListParser;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Static Variables
|
||||
|
|
13
src/GBI/GBI.h
Executable file → Normal file
13
src/GBI/GBI.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -23,21 +23,22 @@
|
|||
#define GRAPHIC_BINARY_INTERFACE_H_
|
||||
|
||||
|
||||
#include "UCodeDefs.h"
|
||||
#include "RDPInstructions.h"
|
||||
#include "UCode0.h" //Super Mario 64
|
||||
#include "UCode1.h" //Games like Mario Kart 64, Starfox 64
|
||||
#include "UCode10.h" //Conker Bad Fur Day
|
||||
#include "UCode2.h" //Golden Eye
|
||||
#include "UCode4.h" //Wave Race 64
|
||||
#include "UCode5.h" //Newer Games
|
||||
#include "UCode6.h" //Diddy Kong Racing
|
||||
#include "UCode7.h" //Yoshi's Story
|
||||
#include "UCode9.h" //Perfect Dark
|
||||
#include "UCode10.h" //Conker Bad Fur Day
|
||||
#include "RDPInstructions.h"
|
||||
#include "UCodeDefs.h"
|
||||
|
||||
class RSP;
|
||||
class RDP;
|
||||
class DisplayListParser;
|
||||
class Memory;
|
||||
class RDP;
|
||||
class RSP;
|
||||
class UCodeSelector;
|
||||
|
||||
// Allows easier setting of GBI commands
|
||||
|
|
39
src/GBI/GBIDefs.h
Executable file → Normal file
39
src/GBI/GBIDefs.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -279,24 +279,25 @@ enum G_CYCLE_TYPE {
|
|||
GBI::G_CULL_BOTH = ucode##_CULL_BOTH; \
|
||||
GBI::G_CLIPPING = ucode##_CLIPPING; \
|
||||
\
|
||||
GBI::G_MV_VIEWPORT = ucode##_MV_VIEWPORT; //\
|
||||
//\
|
||||
//GBI::G_MWO_aLIGHT_1 = ucode##_MWO_aLIGHT_1; \
|
||||
//GBI::G_MWO_bLIGHT_1 = ucode##_MWO_bLIGHT_1; \
|
||||
//GBI::G_MWO_aLIGHT_2 = ucode##_MWO_aLIGHT_2; \
|
||||
//GBI::G_MWO_bLIGHT_2 = ucode##_MWO_bLIGHT_2; \
|
||||
//GBI::G_MWO_aLIGHT_3 = ucode##_MWO_aLIGHT_3; \
|
||||
//GBI::G_MWO_bLIGHT_3 = ucode##_MWO_bLIGHT_3; \
|
||||
//GBI::G_MWO_aLIGHT_4 = ucode##_MWO_aLIGHT_4; \
|
||||
//GBI::G_MWO_bLIGHT_4 = ucode##_MWO_bLIGHT_4; \
|
||||
//GBI::G_MWO_aLIGHT_5 = ucode##_MWO_aLIGHT_5; \
|
||||
//GBI::G_MWO_bLIGHT_5 = ucode##_MWO_bLIGHT_5; \
|
||||
//GBI::G_MWO_aLIGHT_6 = ucode##_MWO_aLIGHT_6; \
|
||||
//GBI::G_MWO_bLIGHT_6 = ucode##_MWO_bLIGHT_6; \
|
||||
//GBI::G_MWO_aLIGHT_7 = ucode##_MWO_aLIGHT_7; \
|
||||
//GBI::G_MWO_bLIGHT_7 = ucode##_MWO_bLIGHT_7; \
|
||||
//GBI::G_MWO_aLIGHT_8 = ucode##_MWO_aLIGHT_8; \
|
||||
//GBI::G_MWO_bLIGHT_8 = ucode##_MWO_bLIGHT_8;
|
||||
GBI::G_MV_VIEWPORT = ucode##_MV_VIEWPORT; \
|
||||
/* \
|
||||
GBI::G_MWO_aLIGHT_1 = ucode##_MWO_aLIGHT_1; \
|
||||
GBI::G_MWO_bLIGHT_1 = ucode##_MWO_bLIGHT_1; \
|
||||
GBI::G_MWO_aLIGHT_2 = ucode##_MWO_aLIGHT_2; \
|
||||
GBI::G_MWO_bLIGHT_2 = ucode##_MWO_bLIGHT_2; \
|
||||
GBI::G_MWO_aLIGHT_3 = ucode##_MWO_aLIGHT_3; \
|
||||
GBI::G_MWO_bLIGHT_3 = ucode##_MWO_bLIGHT_3; \
|
||||
GBI::G_MWO_aLIGHT_4 = ucode##_MWO_aLIGHT_4; \
|
||||
GBI::G_MWO_bLIGHT_4 = ucode##_MWO_bLIGHT_4; \
|
||||
GBI::G_MWO_aLIGHT_5 = ucode##_MWO_aLIGHT_5; \
|
||||
GBI::G_MWO_bLIGHT_5 = ucode##_MWO_bLIGHT_5; \
|
||||
GBI::G_MWO_aLIGHT_6 = ucode##_MWO_aLIGHT_6; \
|
||||
GBI::G_MWO_bLIGHT_6 = ucode##_MWO_bLIGHT_6; \
|
||||
GBI::G_MWO_aLIGHT_7 = ucode##_MWO_aLIGHT_7; \
|
||||
GBI::G_MWO_bLIGHT_7 = ucode##_MWO_bLIGHT_7; \
|
||||
GBI::G_MWO_aLIGHT_8 = ucode##_MWO_aLIGHT_8; \
|
||||
GBI::G_MWO_bLIGHT_8 = ucode##_MWO_bLIGHT_8; \
|
||||
*/
|
||||
|
||||
|
||||
// Fixed point conversion factors
|
||||
|
|
139
src/GraphicsPlugin.cpp
Executable file → Normal file
139
src/GraphicsPlugin.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -20,20 +20,26 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "GraphicsPlugin.h"
|
||||
#include "VI.h" //Video interface
|
||||
#include "Memory.h" //Access to memory (RDRAM, Texture Memory)
|
||||
#include "OpenGLRenderer.h" //Renderer
|
||||
#include "FrameBuffer.h" //Framebuffer
|
||||
#include <sys/time.h>
|
||||
#include <ctime>
|
||||
|
||||
#include "ConfigMap.h" //Configuration
|
||||
#include "DisplayListParser.h" //Displaylist parser
|
||||
#include "FogManager.h" //Fog
|
||||
#include "RSP.h" //Reality Signal Processor
|
||||
#include "RDP.h" //Reality Drawing Processor
|
||||
#include "FrameBuffer.h" //Framebuffer
|
||||
#include "GBI.h" //Graphics Binary Interface
|
||||
#include "ConfigMap.h" //Configuration
|
||||
#include "GraphicsPlugin.h"
|
||||
#include "Logger.h" //Debug logger
|
||||
#include "Memory.h" //Access to memory (RDRAM, Texture Memory)
|
||||
#include "OpenGL.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGLRenderer.h" //Renderer
|
||||
#include "RDP.h" //Reality Drawing Processor
|
||||
#include "RSP.h" //Reality Signal Processor
|
||||
#include "RomDetector.h"
|
||||
#include <ctime>
|
||||
#include "VI.h" //Video interface
|
||||
#include "m64p.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
//FrameBuffer framebuffer01;
|
||||
//FrameBuffer framebuffer02;
|
||||
|
@ -63,6 +69,13 @@ GraphicsPlugin::~GraphicsPlugin()
|
|||
//-----------------------------------------------------------------------------
|
||||
bool GraphicsPlugin::initialize(GFX_INFO* graphicsInfo)
|
||||
{
|
||||
//Initialize video output
|
||||
if (CoreVideo_Init() != M64ERR_SUCCESS)
|
||||
{
|
||||
Logger::getSingleton().printMsg("Could not initialize video.", M64MSG_ERROR);
|
||||
return false;
|
||||
}
|
||||
|
||||
//Save pointer to graphics info
|
||||
m_graphicsInfo = graphicsInfo;
|
||||
|
||||
|
@ -94,7 +107,7 @@ bool GraphicsPlugin::initialize(GFX_INFO* graphicsInfo)
|
|||
}
|
||||
|
||||
if (CoreVideo_SetVideoMode(m_config->fullscreenWidth, m_config->fullscreenHeight, m_config->fullscreenBitDepth,
|
||||
m_config->startFullscreen ? M64VIDEO_FULLSCREEN : M64VIDEO_WINDOWED) != M64ERR_SUCCESS)
|
||||
m_config->startFullscreen ? M64VIDEO_FULLSCREEN : M64VIDEO_WINDOWED, (m64p_video_flags) 0) != M64ERR_SUCCESS)
|
||||
{
|
||||
Logger::getSingleton().printMsg("Could not set video mode.", M64MSG_ERROR);
|
||||
return false;
|
||||
|
@ -135,7 +148,7 @@ bool GraphicsPlugin::initialize(GFX_INFO* graphicsInfo)
|
|||
//Initialize Texture Cache
|
||||
//! @todo Not "hardcode" TextureBitDepth.
|
||||
m_textureCache.initialize(&m_rsp, &m_rdp, m_memory, 16);
|
||||
|
||||
m_textureCache.setMipmap( m_config->mipmapping );
|
||||
|
||||
//Initialize OpenGL Renderer
|
||||
if ( !OpenGLRenderer::getSingleton().initialize(&m_rsp, &m_rdp, &m_textureCache, m_vi, m_fogManager) )
|
||||
|
@ -302,97 +315,14 @@ void renderRedBox(float x, float y, float z, float width, float height, float l
|
|||
glEnd();
|
||||
}
|
||||
|
||||
void GraphicsPlugin::_motionBlur()
|
||||
{
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0f,(GLfloat)800.0f/(GLfloat)600.0f, .5f ,150.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
|
||||
|
||||
////Render new stuff to the motion blur texture
|
||||
if ( animate(50) )
|
||||
{
|
||||
//Render to frame buffer
|
||||
// framebuffer01.beginRendering();
|
||||
{
|
||||
renderMotionBlur();
|
||||
|
||||
glMatrixMode(GL_PROJECTION);
|
||||
glLoadIdentity();
|
||||
gluPerspective(45.0f,(GLfloat)800.0f/(GLfloat)600.0f, .5f ,150.0f);
|
||||
|
||||
glMatrixMode(GL_MODELVIEW);
|
||||
glLoadIdentity();
|
||||
gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
|
||||
|
||||
renderRedBox(0, 0, 0, 1, 5, 1);
|
||||
//m_displayListParser->processDisplayList();
|
||||
|
||||
|
||||
}
|
||||
glFlush();
|
||||
// framebuffer01.endRendering();
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
}
|
||||
|
||||
//glDisable(GL_BLEND);
|
||||
//glEnable(GL_DEPTH_TEST);
|
||||
|
||||
//renderMotionBlur();
|
||||
//renderTriangle();
|
||||
|
||||
renderMotionBlur();
|
||||
|
||||
// glMatrixMode(GL_PROJECTION);
|
||||
//glLoadIdentity();
|
||||
//gluPerspective(45.0f,(GLfloat)800.0f/(GLfloat)600.0f, .5f ,150.0f);
|
||||
|
||||
// glMatrixMode(GL_MODELVIEW);
|
||||
// glLoadIdentity();
|
||||
//gluLookAt(0, 0, 10, 0, 0, 0, 0, 1, 0);
|
||||
|
||||
//renderRedBox(0, 0, 0, 1, 5, 1);
|
||||
|
||||
m_rdp.triggerInterrupt();
|
||||
m_rsp.triggerInterrupt();
|
||||
|
||||
|
||||
//Render new stuff to frame buffer
|
||||
//framebuffer02.beginRendering();
|
||||
{
|
||||
// m_displayListParser->processDisplayList();
|
||||
// RSP::getSingleton().reset();
|
||||
// RDP::getSingleton().reset();
|
||||
|
||||
// glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
// glDisable(GL_BLEND);
|
||||
// glEnable(GL_DEPTH_TEST);
|
||||
// glDisable(GL_ALPHA_TEST);
|
||||
//m_displayListParser->processDisplayList();
|
||||
}
|
||||
//glFlush();
|
||||
//framebuffer02.endRendering();
|
||||
//glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
|
||||
//Blend old stuff and new stuff
|
||||
|
||||
//framebuffer02.render2();
|
||||
|
||||
//FrameBuffer::getSingleton().render();
|
||||
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// ProcessDisplayList
|
||||
//-----------------------------------------------------------------------------
|
||||
void GraphicsPlugin::processDisplayList()
|
||||
{
|
||||
if ( m_numDListProcessed == 1 && m_romDetector->getClearType() == CT_AFTER_ONE_DISPLAY_LIST ||
|
||||
m_numDListProcessed == 2 && m_romDetector->getClearType() == CT_AFTER_TWO_DISPLAY_LIST ||
|
||||
m_numDListProcessed == 3 && m_romDetector->getClearType() == CT_AFTER_THREE_DISPLAY_LIST )
|
||||
if ( (m_numDListProcessed == 1 && m_romDetector->getClearType() == CT_AFTER_ONE_DISPLAY_LIST) ||
|
||||
(m_numDListProcessed == 2 && m_romDetector->getClearType() == CT_AFTER_TWO_DISPLAY_LIST) ||
|
||||
(m_numDListProcessed == 3 && m_romDetector->getClearType() == CT_AFTER_THREE_DISPLAY_LIST) )
|
||||
{
|
||||
bool scissors = OpenGLManager::getSingleton().getScissorEnabled();
|
||||
OpenGLManager::getSingleton().setScissorEnabled(false);
|
||||
|
@ -441,18 +371,7 @@ void GraphicsPlugin::processDisplayList()
|
|||
m_rsp.reset();
|
||||
m_rdp.reset();
|
||||
m_openGLMgr.setCullMode(false, true);
|
||||
|
||||
|
||||
if ( false )
|
||||
{
|
||||
_motionBlur();
|
||||
}
|
||||
else
|
||||
{
|
||||
m_displayListParser->processDisplayList();
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//Clear Screen?
|
||||
|
@ -460,7 +379,7 @@ void GraphicsPlugin::processDisplayList()
|
|||
|
||||
//glFlush();
|
||||
//OpenGLManager::getSingleton().endRendering();
|
||||
|
||||
OpenGLManager::getSingleton().setDrawFlag();
|
||||
//Take screenshot?
|
||||
}
|
||||
|
||||
|
|
15
src/GraphicsPlugin.h
Executable file → Normal file
15
src/GraphicsPlugin.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -23,18 +23,21 @@
|
|||
#ifndef GRAPHICS_PLUGIN_H_
|
||||
#define GRAPHICS_PLUGIN_H_
|
||||
|
||||
#include "TextureCache.h"
|
||||
#include "GBI.h"
|
||||
#include "OpenGLManager.h" //Initializes OpenGL and handles OpenGL states
|
||||
#include "RSP.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "TextureCache.h"
|
||||
#include "m64p_plugin.h"
|
||||
|
||||
//Forward declarations
|
||||
//struct GFX_INFO;
|
||||
class VI;
|
||||
class Memory;
|
||||
class DisplayListParser;
|
||||
class FogManager;
|
||||
class Memory;
|
||||
class OpenGLManager;
|
||||
class ROMDetector;
|
||||
//struct GFX_INFO;
|
||||
class VI;
|
||||
struct ConfigMap;
|
||||
|
||||
//*****************************************************************************
|
||||
|
|
46
src/Memory.cpp
Executable file → Normal file
46
src/Memory.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -67,48 +67,6 @@ bool Memory::initialize(unsigned char* RDRAM, unsigned char* DMEM)
|
|||
// m_TMEM[i] = 0;
|
||||
//}
|
||||
|
||||
_calculateRDRAMSize();
|
||||
m_RDRAMSize = 0x800000;
|
||||
return true;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Calculate RDRAM Size
|
||||
//! Detect how much Rambus Dynamic RAM there is
|
||||
//-----------------------------------------------------------------------------
|
||||
void Memory::_calculateRDRAMSize()
|
||||
{
|
||||
unsigned char test;
|
||||
|
||||
#if 1
|
||||
try
|
||||
{
|
||||
test = m_RDRAM[0x400000];
|
||||
test = m_RDRAM[0x500000];
|
||||
test = m_RDRAM[0x600000];
|
||||
test = m_RDRAM[0x700000];
|
||||
test = m_RDRAM[0x7FFFFC];
|
||||
m_RDRAMSize = 0x800000;
|
||||
}
|
||||
catch(...)
|
||||
{
|
||||
m_RDRAMSize = 0x400000;
|
||||
}
|
||||
|
||||
#else
|
||||
unsigned int testAddress;
|
||||
|
||||
__try
|
||||
{
|
||||
testAddress = 0;
|
||||
while ( true )
|
||||
{
|
||||
test = m_RDRAM[testAddress];
|
||||
testAddress++;
|
||||
}
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
m_RDRAMSize = testAddress;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
7
src/Memory.h
Executable file → Normal file
7
src/Memory.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -65,11 +65,6 @@ public:
|
|||
m_segments[address] = value;
|
||||
}
|
||||
|
||||
private:
|
||||
|
||||
//Calculate size of Rambus Dynamic Random Access Memory.
|
||||
void _calculateRDRAMSize();
|
||||
|
||||
private:
|
||||
|
||||
unsigned char* m_RDRAM; //!< Rambus Dynamic Random Access Memory
|
||||
|
|
7
src/MultiTexturingExt.cpp
Executable file → Normal file
7
src/MultiTexturingExt.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,8 +19,8 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
|
||||
|
||||
//Multi Texturing functions
|
||||
|
@ -37,7 +37,8 @@ bool g_MultiTextureARBSupport = false;
|
|||
bool initializeMultiTexturingExtensions()
|
||||
{
|
||||
//Initialize Extentions
|
||||
if ( g_MultiTextureARBSupport = isExtensionSupported("GL_ARB_multitexture") )
|
||||
g_MultiTextureARBSupport = isExtensionSupported("GL_ARB_multitexture");
|
||||
if ( g_MultiTextureARBSupport )
|
||||
{
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
glActiveTextureARB = (PFNGLACTIVETEXTUREARBPROC)wglGetProcAddress( "glActiveTextureARB" );
|
||||
|
|
4
src/MultiTexturingExt.h
Executable file → Normal file
4
src/MultiTexturingExt.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -23,8 +23,8 @@
|
|||
#ifndef MULTI_TEXTURING_EXTENSION_H_
|
||||
#define MULTI_TEXTURING_EXTENSION_H_
|
||||
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
//Multi Texturing Definitions
|
||||
|
|
2
src/N64Games.h
Executable file → Normal file
2
src/N64Games.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
8
src/OpenGL.h
Executable file → Normal file
8
src/OpenGL.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
*
|
||||
|
@ -24,7 +24,13 @@
|
|||
#ifndef WIN32
|
||||
#define GL_GLEXT_PROTOTYPES
|
||||
#endif
|
||||
#if defined(__MACOSX__)
|
||||
#include <OpenGL/gl.h>
|
||||
#elif defined(__MACOS__)
|
||||
#include <gl.h>
|
||||
#else
|
||||
#include <GL/gl.h>
|
||||
#endif
|
||||
#ifndef WIN32
|
||||
#include <GL/glext.h>
|
||||
#endif
|
||||
|
|
9
src/OpenGLManager.cpp
Executable file → Normal file
9
src/OpenGLManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -20,7 +20,10 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <stddef.h>
|
||||
|
||||
#include "OpenGLManager.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
@ -55,6 +58,7 @@ bool OpenGLManager::initialize(bool fullscreen, int width, int height, int bitDe
|
|||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glEnable(GL_CULL_FACE);
|
||||
this->setViewport(0, 0, width, height);
|
||||
|
||||
//Set render states
|
||||
setCullMode(false, true);
|
||||
|
@ -138,7 +142,8 @@ void OpenGLManager::endRendering()
|
|||
{
|
||||
glFinish();
|
||||
if (m_renderingCallback)
|
||||
m_renderingCallback();
|
||||
m_renderingCallback(m_drawFlag);
|
||||
m_drawFlag = 0;
|
||||
CoreVideo_GL_SwapBuffers();
|
||||
//glFlush();
|
||||
}
|
||||
|
|
17
src/OpenGLManager.h
Executable file → Normal file
17
src/OpenGLManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -23,14 +23,9 @@
|
|||
#ifndef OPEN_GL_Manager_H_
|
||||
#define OPEN_GL_Manager_H_
|
||||
|
||||
//OpenGL linking and includes
|
||||
#pragma comment(lib,"opengl32.lib")
|
||||
#pragma comment(lib,"glu32.lib")
|
||||
|
||||
#include "OpenGL.h"
|
||||
//OpenGL includes
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include <GL/glu.h>
|
||||
|
||||
//*****************************************************************************
|
||||
//* OpenGL Manager Class
|
||||
|
@ -97,7 +92,10 @@ public:
|
|||
void setClearColor(float r, float g, float b) { glClearColor(r, g, b, 1.0f); }
|
||||
|
||||
//Set callback from the M64P core
|
||||
void setRenderingCallback(void(*callback)()) { m_renderingCallback = callback; }
|
||||
void setRenderingCallback(void(*callback)(int)) { m_renderingCallback = callback; }
|
||||
|
||||
//Set draw flag for rendering callback
|
||||
void setDrawFlag() { m_drawFlag = 1; }
|
||||
|
||||
public:
|
||||
|
||||
|
@ -132,7 +130,8 @@ private:
|
|||
bool m_fullscreen; //!< Fullscreen mode or window mode?
|
||||
bool m_forceDisableCulling; //!< Culling cant be enabled if this is true
|
||||
|
||||
void (*m_renderingCallback)(); //Rendering callback from the core
|
||||
void (*m_renderingCallback)(int); //Rendering callback from the core
|
||||
int m_drawFlag;
|
||||
};
|
||||
|
||||
#endif
|
||||
|
|
37
src/RDP/RDP.cpp
Executable file → Normal file
37
src/RDP/RDP.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,26 +19,31 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RDP.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "GBI.h"
|
||||
#include "RSP.h"
|
||||
#include "DisplayListParser.h"
|
||||
#include "assembler.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "TextureCache.h"
|
||||
#include "VI.h"
|
||||
#include "Memory.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGL2DRenderer.h"
|
||||
#include <algorithm>
|
||||
|
||||
#include "AdvancedCombinerManager.h"
|
||||
#include "CachedTexture.h"
|
||||
#include "DisplayListParser.h"
|
||||
#include "FogManager.h"
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "Logger.h"
|
||||
#include "MathLib.h"
|
||||
#include "RomDetector.h"
|
||||
#include "m64p.h"
|
||||
#include "Memory.h"
|
||||
#include "N64Games.h"
|
||||
#include "OpenGL.h"
|
||||
#include <algorithm>
|
||||
#include "OpenGL2DRenderer.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "RomDetector.h"
|
||||
#include "TextureCache.h"
|
||||
#include "VI.h"
|
||||
#include "assembler.h"
|
||||
#include "m64p.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
using std::max;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
20
src/RDP/RDP.h
Executable file → Normal file
20
src/RDP/RDP.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -23,22 +23,24 @@
|
|||
#define REALITY_DRAWING_PROCESSOR_H_
|
||||
|
||||
//Includes
|
||||
#include "m64p_plugin.h"
|
||||
#include "UCodeDefs.h"
|
||||
#define M64P_PLUGIN_PROTOTYPES 1
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "TextureLoader.h"
|
||||
#include "UCodeDefs.h"
|
||||
#include "m64p_plugin.h"
|
||||
|
||||
//Forward declaration
|
||||
class RSP;
|
||||
class VI;
|
||||
class Memory;
|
||||
class DisplayListParser;
|
||||
class TextureCache;
|
||||
class AdvancedCombinerManager;
|
||||
class DisplayListParser;
|
||||
class FogManager;
|
||||
class TextureLoader;
|
||||
class GBI;
|
||||
class Memory;
|
||||
class OpenGL2DRenderer;
|
||||
class RSP;
|
||||
class TextureCache;
|
||||
class TextureLoader;
|
||||
class VI;
|
||||
|
||||
//*****************************************************************************
|
||||
//! RDPSetImgInfo
|
||||
|
|
9
src/RDP/RDPInstructions.cpp
Executable file → Normal file
9
src/RDP/RDPInstructions.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,11 +19,12 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RDPInstructions.h"
|
||||
#include "RDPUCodeStructs.h"
|
||||
#include "RDP.h"
|
||||
#include "DisplayListParser.h"
|
||||
#include "Logger.h"
|
||||
#include "RDP.h"
|
||||
#include "RDPInstructions.h"
|
||||
#include "RDPUCodeStructs.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Static Variables
|
||||
|
|
2
src/RDP/RDPInstructions.h
Executable file → Normal file
2
src/RDP/RDPInstructions.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
2
src/RDP/RDPUCodeStructs.h
Executable file → Normal file
2
src/RDP/RDPUCodeStructs.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
33
src/RSP/RSP.cpp
Executable file → Normal file
33
src/RSP/RSP.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,21 +19,24 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RSP.h"
|
||||
#include "../UCodeDefs.h"
|
||||
#include "../RDP/RDP.h"
|
||||
#include <cmath>
|
||||
#include "GBIDefs.h"
|
||||
#include "VI.h"
|
||||
#include "Memory.h"
|
||||
#include "Logger.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "RSPLightManager.h"
|
||||
#include "FogManager.h"
|
||||
|
||||
#include "../RDP/RDP.h"
|
||||
#include "../UCodeDefs.h"
|
||||
#include "DisplayListParser.h"
|
||||
#include "FogManager.h"
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "Logger.h"
|
||||
#include "MathLib.h"
|
||||
#include "MathLib.h"
|
||||
#include "Memory.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "RSP.h"
|
||||
#include "RSPLightManager.h"
|
||||
#include "RSPMatrixManager.h"
|
||||
#include "VI.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
#define MI_INTR_SP 0x00000001 //!< RSP Interrupt signal
|
||||
|
||||
|
@ -119,14 +122,10 @@ void RSP::updateGeometryStates()
|
|||
{
|
||||
bool cullFront = (m_geometryMode & GBI::G_CULL_FRONT ) != 0;
|
||||
bool cullBack = (m_geometryMode & GBI::G_CULL_BACK ) != 0;
|
||||
bool shade = (m_geometryMode & G_SHADE ) != 0;
|
||||
bool shadeSmooth = (m_geometryMode & GBI::G_SHADING_SMOOTH) != 0;
|
||||
bool fog = (m_geometryMode & G_FOG ) != 0;
|
||||
bool textureGen = (m_geometryMode & G_TEXTURE_GEN ) != 0;
|
||||
bool linearTextureGen = (m_geometryMode & G_TEXTURE_GEN_LINEAR ) != 0;
|
||||
bool lighting = (m_geometryMode & G_LIGHTING ) != 0;
|
||||
bool zBuffer = (m_geometryMode & G_ZBUFFER ) != 0;
|
||||
bool clipping = (m_geometryMode & GBI::G_CLIPPING ) != 0;
|
||||
|
||||
//Update states
|
||||
m_lightMgr->setLightEnabled(lighting);
|
||||
|
|
20
src/RSP/RSP.h
Executable file → Normal file
20
src/RSP/RSP.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,20 +22,22 @@
|
|||
#ifndef REALITY_SIGNAL_PROCESSOR_H_
|
||||
#define REALITY_SIGNAL_PROCESSOR_H_
|
||||
|
||||
#include "m64p_plugin.h"
|
||||
#include "UCodeDefs.h"
|
||||
#define M64P_PLUGIN_PROTOTYPES 1
|
||||
#include "Matrix4.h"
|
||||
#include "RSPMatrixManager.h"
|
||||
#include "RSPVertexManager.h"
|
||||
#include "Matrix4.h"
|
||||
#include "UCodeDefs.h"
|
||||
#include "m64p_plugin.h"
|
||||
|
||||
//Forward declarations
|
||||
class DisplayListParser;
|
||||
class FogManager;
|
||||
class Memory;
|
||||
class RDP;
|
||||
class RSPLightManager;
|
||||
class RSPMatrixManager;
|
||||
class VI;
|
||||
struct RDPTile;
|
||||
class RDP;
|
||||
class Memory;
|
||||
class DisplayListParser;
|
||||
class RSPLightManager;
|
||||
class FogManager;
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// Defines
|
||||
|
|
8
src/RSP/RSPLightManager.cpp
Executable file → Normal file
8
src/RSP/RSPLightManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,11 +19,11 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RSPLightManager.h"
|
||||
#include "Memory.h"
|
||||
#include "MathLib.h"
|
||||
#include "GBI.h"
|
||||
#include "Logger.h"
|
||||
#include "MathLib.h"
|
||||
#include "Memory.h"
|
||||
#include "RSPLightManager.h"
|
||||
|
||||
#define RGBA_GETALPHA(rgb) ((rgb) >> 24)
|
||||
#define RGBA_GETRED(rgb) (((rgb) >> 16) & 0xff)
|
||||
|
|
2
src/RSP/RSPLightManager.h
Executable file → Normal file
2
src/RSP/RSPLightManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
8
src/RSP/RSPMatrixManager.cpp
Executable file → Normal file
8
src/RSP/RSPMatrixManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,11 +19,13 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RSPMatrixManager.h"
|
||||
#include "Memory.h"
|
||||
#include <cmath> //modff
|
||||
|
||||
#include "GBI.h" //SHIFT
|
||||
#include "GBIDefs.h" //_FIXED2FLOAT
|
||||
#include "Memory.h"
|
||||
#include "RSPMatrixManager.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
2
src/RSP/RSPMatrixManager.h
Executable file → Normal file
2
src/RSP/RSPMatrixManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
25
src/RSP/RSPVertexManager.cpp
Executable file → Normal file
25
src/RSP/RSPVertexManager.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,16 +19,20 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RSPVertexManager.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "Memory.h"
|
||||
#include "RSPMatrixManager.h"
|
||||
#include "RSPLightManager.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "GBIDefs.h" //hmm
|
||||
#include "MathLib.h" //Transform, Vec3Normalize
|
||||
#include <cmath> //sqrt
|
||||
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h" //hmm
|
||||
#include "Logger.h"
|
||||
#include "MathLib.h" //Transform, Vec3Normalize
|
||||
#include "Memory.h"
|
||||
#include "OpenGL.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "RSPLightManager.h"
|
||||
#include "RSPMatrixManager.h"
|
||||
#include "RSPVertexManager.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
//Vertex
|
||||
struct Vertex
|
||||
|
@ -546,9 +550,6 @@ void RSPVertexManager::addConkerVertices(unsigned int segmentAddress, unsigned i
|
|||
//Get vertex from rdram
|
||||
Vertex *vertex = (Vertex*) m_memory->getRDRAM(address);
|
||||
|
||||
//Colors
|
||||
short *vertexColoraddr = (short*)(m_memory->getRDRAM(m_conkerRDRAMAddress));
|
||||
|
||||
|
||||
//For each vertex
|
||||
for (unsigned int i=firstVertexIndex; i <numVertices+firstVertexIndex; ++i)
|
||||
|
|
4
src/RSP/RSPVertexManager.h
Executable file → Normal file
4
src/RSP/RSPVertexManager.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -108,7 +108,7 @@ private:
|
|||
RSPLightManager* m_lightMgr;
|
||||
|
||||
//Vertex Buffer
|
||||
static const int MAX_VERTICES = 300;
|
||||
static const unsigned int MAX_VERTICES = 300;
|
||||
SPVertex m_vertices[MAX_VERTICES];
|
||||
|
||||
unsigned int m_colorBaseRDRAMAddress; //!< Address in RDRAM where colors for vertices are located (used by Perfect Dark)
|
||||
|
|
7
src/RomDetector.cpp
Executable file → Normal file
7
src/RomDetector.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,10 +19,11 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "RomDetector.h"
|
||||
#include "assembler.h" //swapRomHeaderBytes
|
||||
#include <string.h> //memcpy
|
||||
|
||||
#include "RomDetector.h"
|
||||
#include "StringFunctions.h"
|
||||
#include "assembler.h" //swapRomHeaderBytes
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
|
2
src/RomDetector.h
Executable file → Normal file
2
src/RomDetector.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
4
src/SecondaryColorExt.cpp
Executable file → Normal file
4
src/SecondaryColorExt.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,8 +19,8 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "SecondaryColorExt.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "SecondaryColorExt.h"
|
||||
|
||||
// EXT_secondary_color functions
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
|
|
4
src/SecondaryColorExt.h
Executable file → Normal file
4
src/SecondaryColorExt.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -23,8 +23,8 @@
|
|||
#ifndef SECONDARY_COLOR_EXTENSION_H_
|
||||
#define SECONDARY_COLOR_EXTENSION_H_
|
||||
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
#ifndef GL_EXT_secondary_color
|
||||
|
|
2
src/UCodeDefs.h
Executable file → Normal file
2
src/UCodeDefs.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
9
src/VI.cpp
Executable file → Normal file
9
src/VI.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,8 +19,9 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "VI.h"
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h" //_FIXED2FLOAT, _SHIFTR
|
||||
#include "VI.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -47,8 +48,8 @@ VI::~VI()
|
|||
void VI::calcSize(GFX_INFO* graphicsInfo)
|
||||
{
|
||||
//Get video interface values
|
||||
unsigned int viScaleX = *graphicsInfo->VI_X_SCALE_REG;
|
||||
unsigned int viScaleY = *graphicsInfo->VI_X_SCALE_REG;
|
||||
//unsigned int viScaleX = *graphicsInfo->VI_X_SCALE_REG;
|
||||
//unsigned int viScaleY = *graphicsInfo->VI_X_SCALE_REG;
|
||||
unsigned int viStartHorizontal = *graphicsInfo->VI_H_START_REG;
|
||||
unsigned int viStartVertical = *graphicsInfo->VI_V_START_REG;
|
||||
|
||||
|
|
11
src/VI.h
Executable file → Normal file
11
src/VI.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -23,6 +23,7 @@
|
|||
#define VIDEO_INTERFACE_H_
|
||||
|
||||
//Forward declarations
|
||||
#define M64P_PLUGIN_PROTOTYPES 1
|
||||
#include "UCodeDefs.h"
|
||||
#include "m64p_plugin.h"
|
||||
|
||||
|
@ -41,13 +42,13 @@ public:
|
|||
void calcSize(GFX_INFO* graphicsInfo);
|
||||
|
||||
//Get Height and Width
|
||||
int getWidth() { return m_width; }
|
||||
int getHeight() { return m_height; }
|
||||
unsigned int getWidth() { return m_width; }
|
||||
unsigned int getHeight() { return m_height; }
|
||||
|
||||
private:
|
||||
|
||||
int m_width; //!< Width of video interface viewport
|
||||
int m_height; //!< Height of video interface viewport
|
||||
unsigned int m_width; //!< Width of video interface viewport
|
||||
unsigned int m_height; //!< Height of video interface viewport
|
||||
|
||||
};
|
||||
|
||||
|
|
8
src/config/Config.cpp
Executable file → Normal file
8
src/config/Config.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -20,10 +20,12 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "Config.h"
|
||||
#include <cstdio>
|
||||
|
||||
#include "Config.h"
|
||||
#include "GraphicsPlugin.h"
|
||||
#include "Logger.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
@ -58,6 +60,7 @@ bool Config::initialize()
|
|||
ConfigSetDefaultBool(m_videoArachnoidSection, "Wireframe", false, "Render in wireframe?");
|
||||
ConfigSetDefaultBool(m_videoArachnoidSection, "Fog", false, "Render fog?");
|
||||
ConfigSetDefaultInt(m_videoArachnoidSection, "MultiSampling", 0, "Use MultiSampling? 0=no 2,4,8,16=quality");
|
||||
ConfigSetDefaultInt(m_videoArachnoidSection, "Mipmapping", 0, "Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear");
|
||||
#ifdef WIN32
|
||||
ConfigSetDefaultInt(m_videoArachnoidSection, "ScreenUpdateSetting", SCREEN_UPDATE_CI, "When to update the screen: 1 - on VI, 2 - on first CI");
|
||||
#else
|
||||
|
@ -79,5 +82,6 @@ void Config::load()
|
|||
m_cfg.wireframe = ConfigGetParamBool(m_videoArachnoidSection, "Wireframe");
|
||||
m_cfg.fog = ConfigGetParamBool(m_videoArachnoidSection, "Fog");
|
||||
m_cfg.multiSampling = ConfigGetParamBool(m_videoArachnoidSection, "MultiSampling");
|
||||
m_cfg.mipmapping = ConfigGetParamInt(m_videoArachnoidSection, "Mipmapping");
|
||||
m_cfg.screenUpdateSetting = ConfigGetParamInt(m_videoArachnoidSection, "ScreenUpdateSetting");
|
||||
}
|
||||
|
|
5
src/config/Config.h
Executable file → Normal file
5
src/config/Config.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -23,8 +23,9 @@
|
|||
#ifndef CONFIG_H_
|
||||
#define CONFIG_H_
|
||||
|
||||
#include "m64p.h"
|
||||
#include "ConfigMap.h"
|
||||
#include "m64p.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
//Forward declaration
|
||||
class GraphicsPlugin;
|
||||
|
|
3
src/config/ConfigMap.h
Executable file → Normal file
3
src/config/ConfigMap.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -39,6 +39,7 @@ struct ConfigMap
|
|||
bool wireframe; //!< Render in wireframe? defualt = false
|
||||
bool fog; //!< Render fog? default = true
|
||||
int multiSampling; //!< Use MultiSampling? 0=no 2,4,8,16=quality default = 0
|
||||
int mipmapping; //!< Use Mipmapping? 0=no, 1=nearest, 2=bilinear, 3=trilinear default = 0
|
||||
int screenUpdateSetting; //!< When to redraw the screen default = SCREEN_UPDATE_VI
|
||||
};
|
||||
|
||||
|
|
17
src/config/StringFunctions.cpp
Executable file → Normal file
17
src/config/StringFunctions.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,8 +19,11 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "StringFunctions.h"
|
||||
#include <ctype.h>
|
||||
#include <cstring>
|
||||
|
||||
#include "StringFunctions.h"
|
||||
|
||||
using std::string;
|
||||
using std::vector;
|
||||
|
||||
|
@ -37,7 +40,7 @@ vector<string> split(const string& str, const string& delims, size_t maxSplits)
|
|||
size_t pos;
|
||||
size_t start = 0;
|
||||
vector<string> strings;
|
||||
int numSplits = 0;
|
||||
size_t numSplits = 0;
|
||||
|
||||
do
|
||||
{
|
||||
|
@ -52,7 +55,7 @@ vector<string> split(const string& str, const string& delims, size_t maxSplits)
|
|||
//Do nothing
|
||||
start = pos + 1;
|
||||
}
|
||||
else if (pos == string::npos || (maxSplits!=-1 && numSplits == maxSplits) )
|
||||
else if (pos == string::npos || (maxSplits!=string::npos && numSplits == maxSplits) )
|
||||
{
|
||||
//No more spliting, copy the rest of the string
|
||||
strings.push_back( str.substr(start) );
|
||||
|
@ -95,6 +98,12 @@ void trim(string& str, bool left, bool right, const string delims)
|
|||
//-----------------------------------------------------------------------------
|
||||
char* trim(char* str, bool left, bool right)
|
||||
{
|
||||
// Empty string check
|
||||
if (*str == '\0')
|
||||
{
|
||||
return str;
|
||||
}
|
||||
|
||||
//Trim from the left
|
||||
if(left)
|
||||
{
|
||||
|
|
9
src/config/StringFunctions.h
Executable file → Normal file
9
src/config/StringFunctions.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -64,15 +64,16 @@ in binary (= untranslated) mode and check for the different newlines yourself.
|
|||
#ifndef STRING_FUNCTIONS_H_
|
||||
#define STRING_FUNCTIONS_H_
|
||||
|
||||
#include <ctype.h>
|
||||
#include <stddef.h>
|
||||
#include <algorithm> //std::transform
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <ctype.h>
|
||||
#include <algorithm> //std::transform
|
||||
|
||||
namespace StringFunctions
|
||||
{
|
||||
//Split
|
||||
std::vector<std::string> split(const std::string& str, const std::string& delims="\n\t ", size_t maxSplits=-1);
|
||||
std::vector<std::string> split(const std::string& str, const std::string& delims="\n\t ", size_t maxSplits=std::string::npos);
|
||||
std::vector<std::string> split(const char* str, const std::string& delims="\n\t ");
|
||||
|
||||
//Trim
|
||||
|
|
4
src/config/StringValue.h
Executable file → Normal file
4
src/config/StringValue.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,8 +22,8 @@
|
|||
#ifndef STRING_VALUE_H_
|
||||
#define STRING_VALUE_H_
|
||||
#include <cstdlib>
|
||||
#include <string>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
//! Represents numeric value(s) with a string using conversion operators
|
||||
struct StringValue
|
||||
|
|
12
src/framebuffer/FrameBuffer.cpp
Executable file → Normal file
12
src/framebuffer/FrameBuffer.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,9 +19,11 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#include "FrameBuffer.h"
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
#ifndef GL_GLEXT_VERSION
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -43,7 +45,7 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
FrameBuffer::FrameBuffer()
|
||||
{
|
||||
m_id = -1;
|
||||
m_id = ~0U;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -99,7 +101,7 @@ void FrameBuffer::initialize(int width, int height)
|
|||
//-----------------------------------------------------------------------------
|
||||
void FrameBuffer::dispose()
|
||||
{
|
||||
if ( m_id != -1 )
|
||||
if ( m_id != ~0U )
|
||||
{
|
||||
glDeleteTextures(1, &m_id);
|
||||
m_id = -1;
|
||||
|
@ -271,5 +273,5 @@ void FrameBuffer::_deactivate()
|
|||
{
|
||||
glActiveTexture((GLuint)GL_TEXTURE0);
|
||||
glDisable(GL_TEXTURE_2D);
|
||||
glBindTexture(GL_TEXTURE_2D, NULL);
|
||||
glBindTexture(GL_TEXTURE_2D, 0);
|
||||
}
|
||||
|
|
2
src/framebuffer/FrameBuffer.h
Executable file → Normal file
2
src/framebuffer/FrameBuffer.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
4
src/hash/CRCCalculator.cpp
Executable file → Normal file
4
src/hash/CRCCalculator.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -64,7 +64,7 @@ CRCCalculator::CRCCalculator()
|
|||
|
||||
/* make exclusive-or pattern from polynomial (0xedb88320L) */
|
||||
poly = 0L;
|
||||
for (int n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
|
||||
for (unsigned int n = 0; n < sizeof(p)/sizeof(unsigned char); n++)
|
||||
{
|
||||
poly |= 1L << (31 - p[n]);
|
||||
}
|
||||
|
|
2
src/hash/CRCCalculator.h
Executable file → Normal file
2
src/hash/CRCCalculator.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
4
src/hash/CRCCalculator2.cpp
Executable file → Normal file
4
src/hash/CRCCalculator2.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -29,8 +29,6 @@ typedef unsigned char byte;
|
|||
//-----------------------------------------------------------------------------
|
||||
unsigned int CRCCalculator2::m_crcTable[256] = {0};
|
||||
|
||||
static unsigned int crc_table[256];
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
2
src/hash/CRCCalculator2.h
Executable file → Normal file
2
src/hash/CRCCalculator2.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
2
src/log/Logger.cpp
Executable file → Normal file
2
src/log/Logger.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
|
3
src/log/Logger.h
Executable file → Normal file
3
src/log/Logger.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -24,6 +24,7 @@
|
|||
#define LOGGER_H_
|
||||
|
||||
#include <cstdlib>
|
||||
|
||||
#include "m64p_types.h"
|
||||
|
||||
//*****************************************************************************
|
||||
|
|
8
src/m64p.h
Executable file → Normal file
8
src/m64p.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
*
|
||||
|
@ -31,9 +31,10 @@
|
|||
#define BOOL int
|
||||
#endif
|
||||
|
||||
#include "m64p_types.h"
|
||||
#include "m64p_plugin.h"
|
||||
#define M64P_PLUGIN_PROTOTYPES 1
|
||||
#include "m64p_config.h"
|
||||
#include "m64p_plugin.h"
|
||||
#include "m64p_types.h"
|
||||
#include "m64p_vidext.h"
|
||||
|
||||
/* definitions of pointers to Core config functions */
|
||||
|
@ -62,6 +63,7 @@ extern ptr_VidExt_ListFullscreenModes CoreVideo_ListFullscreenModes;
|
|||
extern ptr_VidExt_SetVideoMode CoreVideo_SetVideoMode;
|
||||
extern ptr_VidExt_SetCaption CoreVideo_SetCaption;
|
||||
extern ptr_VidExt_ToggleFullScreen CoreVideo_ToggleFullScreen;
|
||||
extern ptr_VidExt_ResizeWindow CoreVideo_ResizeWindow;
|
||||
extern ptr_VidExt_GL_GetProcAddress CoreVideo_GL_GetProcAddress;
|
||||
extern ptr_VidExt_GL_SetAttribute CoreVideo_GL_SetAttribute;
|
||||
extern ptr_VidExt_GL_SwapBuffers CoreVideo_GL_SwapBuffers;
|
||||
|
|
78
src/main.cpp
Executable file → Normal file
78
src/main.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -21,22 +21,32 @@
|
|||
*****************************************************************************/
|
||||
|
||||
//Includes
|
||||
#include "m64p.h"
|
||||
#define M64P_PLUGIN_PROTOTYPES 1
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "ConfigMap.h"
|
||||
#include "GraphicsPlugin.h" //Main class
|
||||
#include "config/Config.h" //Configuration
|
||||
#include "Logger.h" //Debug logger
|
||||
#include "MemoryLeakDetector.h" //For detecting memory leaks
|
||||
|
||||
#include "m64p_types.h"
|
||||
#include "m64p_plugin.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "config/Config.h" //Configuration
|
||||
#include "m64p.h"
|
||||
#include "m64p_common.h"
|
||||
#include "m64p_config.h"
|
||||
#include "m64p_plugin.h"
|
||||
#include "m64p_types.h"
|
||||
#include "m64p_vidext.h"
|
||||
|
||||
#include "osal_dynamiclib.h"
|
||||
|
||||
//Definitions
|
||||
#define PLUGIN_NAME "Arachnoid Video Plugin"
|
||||
#define PLUGIN_VERSION 0x016304
|
||||
#define PLUGIN_VERSION 0x020600
|
||||
#define VIDEO_PLUGIN_API_VERSION 0x020200
|
||||
#define CONFIG_API_VERSION 0x020000
|
||||
#define VIDEXT_API_VERSION 0x030000
|
||||
|
||||
#define VERSION_PRINTF_SPLIT(x) (((x) >> 16) & 0xffff), (((x) >> 8) & 0xff), ((x) & 0xff)
|
||||
|
||||
#define MI_INTR_DP 0x00000020 //!< RDP Interrupt signal
|
||||
#define MI_INTR_SP 0x00000001 //!< RSP Interrupt signal
|
||||
|
@ -50,7 +60,7 @@ GFX_INFO g_graphicsInfo; //!< Informatio
|
|||
GraphicsPlugin g_graphicsPlugin; //!< Main class for application
|
||||
Config g_config(&g_graphicsPlugin); //!< Handles configuration
|
||||
|
||||
void (*renderCallback)() = NULL;
|
||||
void (*renderCallback)(int) = NULL;
|
||||
|
||||
|
||||
/* definitions of pointers to Core config functions */
|
||||
|
@ -79,6 +89,7 @@ ptr_VidExt_ListFullscreenModes CoreVideo_ListFullscreenModes = NULL;
|
|||
ptr_VidExt_SetVideoMode CoreVideo_SetVideoMode = NULL;
|
||||
ptr_VidExt_SetCaption CoreVideo_SetCaption = NULL;
|
||||
ptr_VidExt_ToggleFullScreen CoreVideo_ToggleFullScreen = NULL;
|
||||
ptr_VidExt_ResizeWindow CoreVideo_ResizeWindow = NULL;
|
||||
ptr_VidExt_GL_GetProcAddress CoreVideo_GL_GetProcAddress = NULL;
|
||||
ptr_VidExt_GL_SetAttribute CoreVideo_GL_SetAttribute = NULL;
|
||||
ptr_VidExt_GL_SwapBuffers CoreVideo_GL_SwapBuffers = NULL;
|
||||
|
@ -92,8 +103,36 @@ extern "C" {
|
|||
EXPORT m64p_error CALL PluginStartup(m64p_dynlib_handle CoreLibHandle, void *Context,
|
||||
void (*DebugCallback)(void *, int, const char *))
|
||||
{
|
||||
char logMsg[530];
|
||||
Logger::getSingleton().initialize(DebugCallback, Context);
|
||||
Logger::getSingleton().printMsg("PluginStartup");
|
||||
|
||||
/* attach and call the CoreGetAPIVersions function, check Config and Video Extension API versions for compatibility */
|
||||
ptr_CoreGetAPIVersions CoreAPIVersionFunc;
|
||||
CoreAPIVersionFunc = (ptr_CoreGetAPIVersions) osal_dynlib_getproc(CoreLibHandle, "CoreGetAPIVersions");
|
||||
if (CoreAPIVersionFunc == NULL)
|
||||
{
|
||||
sprintf(logMsg, "Core emulator broken; no CoreAPIVersionFunc() function found.");
|
||||
Logger::getSingleton().printMsg(logMsg, M64MSG_ERROR);
|
||||
return M64ERR_INCOMPATIBLE;
|
||||
}
|
||||
int ConfigAPIVersion, DebugAPIVersion, VidextAPIVersion;
|
||||
(*CoreAPIVersionFunc)(&ConfigAPIVersion, &DebugAPIVersion, &VidextAPIVersion, NULL);
|
||||
if ((ConfigAPIVersion & 0xffff0000) != (CONFIG_API_VERSION & 0xffff0000))
|
||||
{
|
||||
sprintf(logMsg, "Emulator core Config API (v%i.%i.%i) incompatible with plugin (v%i.%i.%i)",
|
||||
VERSION_PRINTF_SPLIT(ConfigAPIVersion), VERSION_PRINTF_SPLIT(CONFIG_API_VERSION));
|
||||
Logger::getSingleton().printMsg(logMsg, M64MSG_ERROR);
|
||||
return M64ERR_INCOMPATIBLE;
|
||||
}
|
||||
if ((VidextAPIVersion & 0xffff0000) != (VIDEXT_API_VERSION & 0xffff0000))
|
||||
{
|
||||
sprintf(logMsg, "Emulator core Video Extension API (v%i.%i.%i) incompatible with plugin (v%i.%i.%i)",
|
||||
VERSION_PRINTF_SPLIT(VidextAPIVersion), VERSION_PRINTF_SPLIT(VIDEXT_API_VERSION));
|
||||
Logger::getSingleton().printMsg(logMsg, M64MSG_ERROR);
|
||||
return M64ERR_INCOMPATIBLE;
|
||||
}
|
||||
|
||||
/* Get the core config function pointers from the library handle */
|
||||
ConfigOpenSection = (ptr_ConfigOpenSection) osal_dynlib_getproc(CoreLibHandle, "ConfigOpenSection");
|
||||
ConfigSetParameter = (ptr_ConfigSetParameter) osal_dynlib_getproc(CoreLibHandle, "ConfigSetParameter");
|
||||
|
@ -128,13 +167,14 @@ EXPORT m64p_error CALL PluginStartup(m64p_dynlib_handle CoreLibHandle, void *Con
|
|||
CoreVideo_SetVideoMode = (ptr_VidExt_SetVideoMode) osal_dynlib_getproc(CoreLibHandle, "VidExt_SetVideoMode");
|
||||
CoreVideo_SetCaption = (ptr_VidExt_SetCaption) osal_dynlib_getproc(CoreLibHandle, "VidExt_SetCaption");
|
||||
CoreVideo_ToggleFullScreen = (ptr_VidExt_ToggleFullScreen) osal_dynlib_getproc(CoreLibHandle, "VidExt_ToggleFullScreen");
|
||||
CoreVideo_ResizeWindow = (ptr_VidExt_ResizeWindow) osal_dynlib_getproc(CoreLibHandle, "VidExt_ResizeWindow");
|
||||
CoreVideo_GL_GetProcAddress = (ptr_VidExt_GL_GetProcAddress) osal_dynlib_getproc(CoreLibHandle, "VidExt_GL_GetProcAddress");
|
||||
CoreVideo_GL_SetAttribute = (ptr_VidExt_GL_SetAttribute) osal_dynlib_getproc(CoreLibHandle, "VidExt_GL_SetAttribute");
|
||||
CoreVideo_GL_SwapBuffers = (ptr_VidExt_GL_SwapBuffers) osal_dynlib_getproc(CoreLibHandle, "VidExt_GL_SwapBuffers");
|
||||
|
||||
if (!CoreVideo_Init || !CoreVideo_Quit || !CoreVideo_ListFullscreenModes || !CoreVideo_SetVideoMode ||
|
||||
!CoreVideo_SetCaption || !CoreVideo_ToggleFullScreen || !CoreVideo_GL_GetProcAddress ||
|
||||
!CoreVideo_GL_SetAttribute || !CoreVideo_GL_SwapBuffers)
|
||||
!CoreVideo_GL_SetAttribute || !CoreVideo_GL_SwapBuffers || !CoreVideo_ResizeWindow)
|
||||
{
|
||||
Logger::getSingleton().printMsg("Couldn't connect to Core video functions", M64MSG_ERROR);
|
||||
return M64ERR_INCOMPATIBLE;
|
||||
|
@ -170,7 +210,7 @@ EXPORT m64p_error CALL PluginGetVersion(m64p_plugin_type *PluginType, int *Plugi
|
|||
*PluginVersion = PLUGIN_VERSION;
|
||||
|
||||
if (APIVersion != NULL)
|
||||
*APIVersion = PLUGIN_API_VERSION;
|
||||
*APIVersion = VIDEO_PLUGIN_API_VERSION;
|
||||
|
||||
if (PluginNamePtr != NULL)
|
||||
*PluginNamePtr = PLUGIN_NAME;
|
||||
|
@ -209,9 +249,7 @@ EXPORT BOOL CALL InitiateGFX(GFX_INFO Gfx_Info)
|
|||
|
||||
//Save Graphics Info
|
||||
memcpy(&g_graphicsInfo, &Gfx_Info, sizeof(GFX_INFO));
|
||||
|
||||
//Initialize Graphics Plugin
|
||||
return (CoreVideo_Init() == M64ERR_SUCCESS);
|
||||
return true;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
@ -224,6 +262,16 @@ EXPORT int CALL RomOpen()
|
|||
return g_graphicsPlugin.initialize(&g_graphicsInfo);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Resize Video Output
|
||||
//! This function is called to force us to resize our output OpenGL window.
|
||||
//! This is currently unsupported, and should never be called because we do
|
||||
//! not pass the RESIZABLE flag to VidExt_SetVideoMode when initializing.
|
||||
//-----------------------------------------------------------------------------
|
||||
EXPORT void CALL ResizeVideoOutput(int Width, int Height)
|
||||
{
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Rom Closed
|
||||
//! This function is called when a rom is closed.
|
||||
|
@ -371,7 +419,7 @@ EXPORT void CALL ReadScreen2(void *dest, int *width, int *height, int front)
|
|||
//! Allows the core to register a callback function that will be called by the
|
||||
//! graphics plugin just before the the frame buffers are swapped.
|
||||
//-----------------------------------------------------------------------------
|
||||
EXPORT void CALL SetRenderingCallback(void (*callback)())
|
||||
EXPORT void CALL SetRenderingCallback(void (*callback)(int))
|
||||
{
|
||||
OpenGLManager::getSingleton().setRenderingCallback(callback);
|
||||
}
|
||||
|
|
4
src/math/MathLib.h
Executable file → Normal file
4
src/math/MathLib.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -23,6 +23,7 @@
|
|||
#define MATH_LIBRARY_H_
|
||||
|
||||
#include <cmath> //sqrtf
|
||||
|
||||
#include "m64p.h"
|
||||
|
||||
// Formula: a.b = a0*b0 + a1*b1 + a2*b2
|
||||
|
@ -48,7 +49,6 @@ inline void transformVertex( float* m, float* v, float* out )
|
|||
float x = v[0];
|
||||
float y = v[1];
|
||||
float z = v[2];
|
||||
float w = v[3];
|
||||
out[0] = m[0] * x + m[4] * y + m[8] * z + m[12];
|
||||
out[1] = m[1] * x + m[5] * y + m[9] * z + m[13];
|
||||
out[2] = m[2] * x + m[6] * y + m[10] * z + m[14];
|
||||
|
|
2
src/math/Matrix4.cpp
Executable file → Normal file
2
src/math/Matrix4.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
3
src/math/Matrix4.h
Executable file → Normal file
3
src/math/Matrix4.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,6 +22,7 @@
|
|||
#ifndef MATRIX_4_H_
|
||||
#define MATRIX_4_H_
|
||||
|
||||
#include <stddef.h>
|
||||
#include <iostream>
|
||||
#include <ostream>
|
||||
|
||||
|
|
2
src/osal_dynamiclib.h
Executable file → Normal file
2
src/osal_dynamiclib.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Mupen64plus-core - osal/dynamiclib.h *
|
||||
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
|
||||
* Mupen64Plus homepage: https://mupen64plus.org/ *
|
||||
* Copyright (C) 2009 Richard Goedeken *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
|
6
src/osal_dynamiclib_unix.cpp
Executable file → Normal file
6
src/osal_dynamiclib_unix.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Mupen64plus-core - osal/dynamiclib_unix.c *
|
||||
* Mupen64Plus homepage: http://code.google.com/p/mupen64plus/ *
|
||||
* Mupen64Plus homepage: https://mupen64plus.org/ *
|
||||
* Copyright (C) 2009 Richard Goedeken *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -19,9 +19,9 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "m64p_types.h"
|
||||
#include "osal_dynamiclib.h"
|
||||
|
|
8
src/osal_dynamiclib_win32.cpp
Executable file → Normal file
8
src/osal_dynamiclib_win32.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus *
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/ *
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/ *
|
||||
* Copyright (C) 2009 Richard Goedeken *
|
||||
* *
|
||||
* This program is free software; you can redistribute it and/or modify *
|
||||
|
@ -19,9 +19,9 @@
|
|||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *
|
||||
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
|
||||
|
||||
#include <windows.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <windows.h>
|
||||
|
||||
#include "m64p_types.h"
|
||||
#include "osal_dynamiclib.h"
|
||||
|
@ -52,7 +52,7 @@ void * osal_dynlib_getproc(m64p_dynlib_handle LibHandle, const char *pccProcedur
|
|||
if (pccProcedureName == NULL)
|
||||
return NULL;
|
||||
|
||||
return GetProcAddress(LibHandle, pccProcedureName);
|
||||
return (void *)GetProcAddress(LibHandle, pccProcedureName);
|
||||
}
|
||||
|
||||
m64p_error osal_dynlib_close(m64p_dynlib_handle LibHandle)
|
||||
|
|
4
src/renderer/OpenGL2DRenderer.cpp
Executable file → Normal file
4
src/renderer/OpenGL2DRenderer.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,10 +19,10 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "OpenGL.h"
|
||||
#include "OpenGL2DRenderer.h"
|
||||
#include "VI.h"
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//* Initialize
|
||||
|
|
2
src/renderer/OpenGL2DRenderer.h
Executable file → Normal file
2
src/renderer/OpenGL2DRenderer.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
30
src/renderer/OpenGLRenderer.cpp
Executable file → Normal file
30
src/renderer/OpenGLRenderer.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2009 Jon Ring
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
|
@ -20,23 +20,29 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "m64p.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <algorithm>
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "RSP.h"
|
||||
#include "RDP.h"
|
||||
#include "TextureCache.h"
|
||||
#include "VI.h"
|
||||
#include "Logger.h"
|
||||
#include <cmath>
|
||||
|
||||
//#include "CombinerManager.h"
|
||||
#include "AdvancedCombinerManager.h"
|
||||
#include "FogManager.h"
|
||||
#include "CachedTexture.h"
|
||||
#include "ExtensionChecker.h"
|
||||
#include "FogManager.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "Logger.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "OpenGL.h"
|
||||
#include "OpenGLManager.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "RSPVertexManager.h"
|
||||
#include "SecondaryColorExt.h"
|
||||
#include "TextureCache.h"
|
||||
#include "TextureLoader.h"
|
||||
#include "VI.h"
|
||||
#include "m64p.h"
|
||||
#include "m64p_types.h"
|
||||
|
||||
|
||||
using std::max;
|
||||
|
|
13
src/renderer/OpenGLRenderer.h
Executable file → Normal file
13
src/renderer/OpenGLRenderer.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,18 +22,17 @@
|
|||
#ifndef OPEN_GL_RENDERER_H_
|
||||
#define OPEN_GL_RENDERER_H_
|
||||
|
||||
#include "m64p.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//Forward Declarations
|
||||
struct SPVertex;
|
||||
class RSP;
|
||||
class FogManager;
|
||||
class RDP;
|
||||
class RSP;
|
||||
class TextureCache;
|
||||
class VI;
|
||||
class FogManager;
|
||||
|
||||
#include "MultiTexturingExt.h"
|
||||
struct SPVertex;
|
||||
|
||||
|
||||
//*****************************************************************************
|
||||
|
|
4
src/texture/CachedTexture.cpp
Executable file → Normal file
4
src/texture/CachedTexture.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -21,8 +21,8 @@
|
|||
|
||||
#include "CachedTexture.h"
|
||||
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
|
2
src/texture/CachedTexture.h
Executable file → Normal file
2
src/texture/CachedTexture.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
11
src/texture/ImageFormatSelector.cpp
Executable file → Normal file
11
src/texture/ImageFormatSelector.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -26,14 +26,13 @@
|
|||
//
|
||||
//*****************************************************************************
|
||||
|
||||
#include "ImageFormatSelector.h"
|
||||
#include "CachedTexture.h"
|
||||
#include "assembler.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include <GL/glu.h>
|
||||
#include "ImageFormatSelector.h"
|
||||
#include "Memory.h"
|
||||
#include "OpenGL.h"
|
||||
#include "assembler.h"
|
||||
#include "m64p.h"
|
||||
|
||||
#ifndef GL_EXT_packed_pixels
|
||||
#define GL_EXT_packed_pixels 1
|
||||
|
|
2
src/texture/ImageFormatSelector.h
Executable file → Normal file
2
src/texture/ImageFormatSelector.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
53
src/texture/TextureCache.cpp
Executable file → Normal file
53
src/texture/TextureCache.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,25 +19,31 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "TextureCache.h"
|
||||
#include <algorithm>
|
||||
|
||||
#include "CachedTexture.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "MathLib.h"
|
||||
#include "OpenGL.h"
|
||||
#include "RDP.h"
|
||||
#include "RSP.h"
|
||||
#include "CachedTexture.h"
|
||||
#include "MathLib.h"
|
||||
#include <algorithm>
|
||||
#include "TextureCache.h"
|
||||
#include "TextureLoader.h"
|
||||
|
||||
using std::min;
|
||||
#include "m64p.h"
|
||||
#include "OpenGL.h"
|
||||
#include "Memory.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "MultiTexturingExt.h"
|
||||
#include "OpenGLRenderer.h"
|
||||
#include "m64p.h"
|
||||
|
||||
//gSPBgRect1Cyc
|
||||
//gSPBgRectCopy
|
||||
#define GL_CLAMP_TO_EDGE 0x812F
|
||||
#define GL_GENERATE_MIPMAP 0x8191
|
||||
|
||||
#include <iostream>
|
||||
|
||||
#include "Logger.h"
|
||||
#include <iostream>
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
@ -532,13 +538,12 @@ unsigned int TextureCache::_calculateCRC(unsigned int t, unsigned int width, uns
|
|||
RDPTile* tile = m_rsp->getTile(t);
|
||||
|
||||
unsigned int crc;
|
||||
unsigned int y, bpl, lineBytes, line;
|
||||
unsigned int y, bpl, line;
|
||||
unsigned long long *src;
|
||||
|
||||
//TODO: remove if new works
|
||||
//src = m_memory->getTextureMemory(tile->tmem);
|
||||
bpl = width << tile->size >> 1;
|
||||
lineBytes = tile->line << 3;
|
||||
|
||||
line = tile->line;
|
||||
if (tile->size == G_IM_SIZ_32b)
|
||||
|
@ -575,9 +580,33 @@ void TextureCache::_activateTexture( unsigned int t, CachedTexture *texture )
|
|||
// Set filter mode. Almost always bilinear, but check anyways
|
||||
unsigned int textureFiltering = m_rdp->getTextureFiltering();
|
||||
if ( textureFiltering == G_TF_BILERP || textureFiltering == G_TF_AVERAGE )
|
||||
{
|
||||
if( m_mipmap > 0 )
|
||||
{
|
||||
// Set Mipmap
|
||||
if(m_mipmap == 1) // nearest
|
||||
{
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST_MIPMAP_NEAREST);
|
||||
}
|
||||
else if(m_mipmap == 2) // bilinear
|
||||
{
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST);
|
||||
}
|
||||
else if(m_mipmap == 3) // trilinear
|
||||
{
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR);
|
||||
}
|
||||
|
||||
// Tell to hardware to generate mipmap (himself) when glTexImage2D is called
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE);
|
||||
}
|
||||
else // no mipmapping
|
||||
{
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_FALSE );
|
||||
}
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -585,6 +614,8 @@ void TextureCache::_activateTexture( unsigned int t, CachedTexture *texture )
|
|||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST );
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Set clamping modes
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, texture->clampS ? GL_CLAMP_TO_EDGE : GL_REPEAT );
|
||||
glTexParameteri( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, texture->clampT ? GL_CLAMP_TO_EDGE : GL_REPEAT );
|
||||
|
|
15
src/texture/TextureCache.h
Executable file → Normal file
15
src/texture/TextureCache.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -22,15 +22,17 @@
|
|||
#ifndef TEXTURE_CACHE_H_
|
||||
#define TEXTURE_CACHE_H_
|
||||
|
||||
#include "CachedTexture.h"
|
||||
#include "CRCCalculator2.h"
|
||||
#include "ImageFormatSelector.h"
|
||||
#include <list>
|
||||
|
||||
#include "CRCCalculator2.h"
|
||||
#include "CachedTexture.h"
|
||||
#include "ImageFormatSelector.h"
|
||||
|
||||
//Forward declarations
|
||||
class CachedTexture;
|
||||
class Memory;
|
||||
class RSP;
|
||||
class RDP;
|
||||
class RSP;
|
||||
|
||||
//*****************************************************************************
|
||||
//* Texture Cache
|
||||
|
@ -50,6 +52,8 @@ public:
|
|||
void update(unsigned int tile);
|
||||
void dispose();
|
||||
|
||||
void setMipmap( int value ) { m_mipmap = value; }
|
||||
|
||||
//Add and Remove
|
||||
CachedTexture* addTop();
|
||||
void removeBottom();
|
||||
|
@ -81,6 +85,7 @@ private:
|
|||
unsigned int m_maxBytes; //!< Maximum number of bytes this cache have
|
||||
unsigned int m_cachedBytes; //!< Current number of bytes in cache
|
||||
unsigned int m_bitDepth; //!<
|
||||
int m_mipmap;
|
||||
|
||||
//Cached textures
|
||||
typedef std::list<CachedTexture*> TextureList;
|
||||
|
|
17
src/texture/TextureLoader.cpp
Executable file → Normal file
17
src/texture/TextureLoader.cpp
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
@ -19,14 +19,15 @@
|
|||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
*****************************************************************************/
|
||||
|
||||
#include "TextureLoader.h"
|
||||
#include "Memory.h"
|
||||
#include "TextureCache.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "assembler.h"
|
||||
#include "Logger.h"
|
||||
#include "RDP.h"
|
||||
#include "CRCCalculator2.h"
|
||||
#include "GBI.h"
|
||||
#include "GBIDefs.h"
|
||||
#include "Logger.h"
|
||||
#include "Memory.h"
|
||||
#include "RDP.h"
|
||||
#include "TextureCache.h"
|
||||
#include "TextureLoader.h"
|
||||
#include "assembler.h"
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
//! Constructor
|
||||
|
|
2
src/texture/TextureLoader.h
Executable file → Normal file
2
src/texture/TextureLoader.h
Executable file → Normal file
|
@ -1,6 +1,6 @@
|
|||
/******************************************************************************
|
||||
* Arachnoid Graphics Plugin for Mupen64Plus
|
||||
* http://bitbucket.org/wahrhaft/mupen64plus-video-arachnoid/
|
||||
* https://github.com/mupen64plus/mupen64plus-video-arachnoid/
|
||||
*
|
||||
* Copyright (C) 2007 Kristofer Karlsson, Rickard Niklasson
|
||||
*
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue