mirror of https://github.com/stella-emu/stella.git
Moved initialization of TIADebug from Console to Debugger, since the Console
doesn't really need to know about it, and it belongs to the debugger anyway. Fixed some makefile issues: Pure C programs were being compiled with 'cc', when 'g++' (or equivalent) should have been used. Only pre-define the compiler flags to include '-O2' if the user doesn't have a CXXFLAGS env variable set. Sometimes I want to use '-g', and in that case I want to override the internal '-O2'. Fixed TIASound code to not use its own type definitions, and instead use the ones from bspf.hxx. Eliminates requirement of specifying -DWIN32, even when the host system wasn't Win32. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@583 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
c64d9b5f64
commit
113f32b7e1
|
@ -1,4 +1,23 @@
|
||||||
# $Header: /home/stephena/STELLA_CVS-to-SVN/stella/Makefile,v 1.3 2005-06-29 00:31:48 urchlay Exp $
|
##============================================================================
|
||||||
|
##
|
||||||
|
## SSSS tt lll lll
|
||||||
|
## SS SS tt ll ll
|
||||||
|
## SS tttttt eeee ll ll aaaa
|
||||||
|
## SSSS tt ee ee ll ll aa
|
||||||
|
## SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
## SS SS tt ee ll ll aa aa
|
||||||
|
## SSSS ttt eeeee llll llll aaaaa
|
||||||
|
##
|
||||||
|
## Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
##
|
||||||
|
## See the file "license" for information on usage and redistribution of
|
||||||
|
## this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
##
|
||||||
|
## $Id: Makefile,v 1.4 2005-06-29 13:11:03 stephena Exp $
|
||||||
|
##
|
||||||
|
## Based on code from ScummVM - Scumm Interpreter
|
||||||
|
## Copyright (C) 2002-2004 The ScummVM project
|
||||||
|
##============================================================================
|
||||||
|
|
||||||
#######################################################################
|
#######################################################################
|
||||||
# Default compilation parameters. Normally don't edit these #
|
# Default compilation parameters. Normally don't edit these #
|
||||||
|
@ -21,8 +40,12 @@ include config.mak
|
||||||
# Uncomment this for stricter compile time code verification
|
# Uncomment this for stricter compile time code verification
|
||||||
# CXXFLAGS+= -Werror
|
# CXXFLAGS+= -Werror
|
||||||
|
|
||||||
CXXFLAGS:= $(CXXFLAGS)
|
ifdef CXXFLAGS
|
||||||
CXXFLAGS+= -O2 -Wall -Wuninitialized -Wno-multichar -Wunused
|
CXXFLAGS:= $(CXXFLAGS)
|
||||||
|
else
|
||||||
|
CXXFLAGS:= -O2
|
||||||
|
endif
|
||||||
|
CXXFLAGS+= -Wall -Wno-multichar -Wunused
|
||||||
# Even more warnings...
|
# Even more warnings...
|
||||||
#CXXFLAGS+= -pedantic -Wpointer-arith -Wcast-qual -Wconversion
|
#CXXFLAGS+= -pedantic -Wpointer-arith -Wcast-qual -Wconversion
|
||||||
#CXXFLAGS+= -Wshadow -Wimplicit -Wundef -Wnon-virtual-dtor
|
#CXXFLAGS+= -Wshadow -Wimplicit -Wundef -Wnon-virtual-dtor
|
||||||
|
@ -97,12 +120,6 @@ clean:
|
||||||
|
|
||||||
.PHONY: all clean dist distclean plugins
|
.PHONY: all clean dist distclean plugins
|
||||||
|
|
||||||
# Old (dumb) compile & dependcy rules
|
|
||||||
#INCS = scumm/scumm.h common/scummsys.h common/stdafx.h
|
|
||||||
#.cpp.o:
|
|
||||||
# $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
|
||||||
#$(OBJS): $(INCS)
|
|
||||||
|
|
||||||
.SUFFIXES: .cxx
|
.SUFFIXES: .cxx
|
||||||
ifndef HAVE_GCC3
|
ifndef HAVE_GCC3
|
||||||
# If you use GCC, disable the above and enable this for intelligent
|
# If you use GCC, disable the above and enable this for intelligent
|
||||||
|
@ -113,6 +130,13 @@ ifndef HAVE_GCC3
|
||||||
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
|
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
|
||||||
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
|
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
|
||||||
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
|
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(MKDIR) $(*D)/$(DEPDIR)
|
||||||
|
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
||||||
|
$(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
|
||||||
|
$(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
|
||||||
|
$(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
|
||||||
else
|
else
|
||||||
# If you even have GCC 3.x, you can use this build rule, which is safer; the above
|
# If you even have GCC 3.x, you can use this build rule, which is safer; the above
|
||||||
# rule can get you into a bad state if you Ctrl-C at the wrong moment.
|
# rule can get you into a bad state if you Ctrl-C at the wrong moment.
|
||||||
|
@ -121,6 +145,10 @@ else
|
||||||
.cxx.o:
|
.cxx.o:
|
||||||
$(MKDIR) $(*D)/$(DEPDIR)
|
$(MKDIR) $(*D)/$(DEPDIR)
|
||||||
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
||||||
|
|
||||||
|
.c.o:
|
||||||
|
$(MKDIR) $(*D)/$(DEPDIR)
|
||||||
|
$(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef HAVE_NASM
|
ifdef HAVE_NASM
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Debugger.cxx,v 1.41 2005-06-29 04:23:41 urchlay Exp $
|
// $Id: Debugger.cxx,v 1.42 2005-06-29 13:11:03 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
|
@ -61,6 +61,7 @@ Debugger::~Debugger()
|
||||||
{
|
{
|
||||||
delete myParser;
|
delete myParser;
|
||||||
delete myDebugger;
|
delete myDebugger;
|
||||||
|
delete myTIAdebug;
|
||||||
delete equateList;
|
delete equateList;
|
||||||
delete breakPoints;
|
delete breakPoints;
|
||||||
delete readTraps;
|
delete readTraps;
|
||||||
|
@ -113,7 +114,13 @@ void Debugger::setConsole(Console* console)
|
||||||
// Keep pointers to these items for efficiency
|
// Keep pointers to these items for efficiency
|
||||||
myConsole = console;
|
myConsole = console;
|
||||||
mySystem = &(myConsole->system());
|
mySystem = &(myConsole->system());
|
||||||
myTIAdebug = myConsole->tiaDebugger();
|
|
||||||
|
// Create a new TIA debugger for this console
|
||||||
|
// This code is somewhat ugly, since we derive a TIA from the MediaSource
|
||||||
|
// for no particular reason. Maybe it's better to make the TIA be the
|
||||||
|
// base class and entirely eliminate MediaSource class??
|
||||||
|
delete myTIAdebug;
|
||||||
|
myTIAdebug = new TIADebug((TIA*)&myConsole->mediaSource());
|
||||||
|
|
||||||
// Create a new 6502 debugger for this console
|
// Create a new 6502 debugger for this console
|
||||||
delete myDebugger;
|
delete myDebugger;
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: PackedBitArray.cxx,v 1.4 2005-06-29 13:11:03 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
#include "bspf.hxx"
|
#include "bspf.hxx"
|
||||||
#include "PackedBitArray.hxx"
|
#include "PackedBitArray.hxx"
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: PackedBitArray.hxx,v 1.2 2005-06-29 13:11:03 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
#ifndef PACKEDBITARRAY_HXX
|
#ifndef PACKEDBITARRAY_HXX
|
||||||
#define PACKEDBITARRAY_HXX
|
#define PACKEDBITARRAY_HXX
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: TIADebug.cxx,v 1.4 2005-06-29 13:11:03 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
#include "TIADebug.hxx"
|
#include "TIADebug.hxx"
|
||||||
#include "System.hxx"
|
#include "System.hxx"
|
||||||
|
|
|
@ -1,3 +1,20 @@
|
||||||
|
//============================================================================
|
||||||
|
//
|
||||||
|
// SSSS tt lll lll
|
||||||
|
// SS SS tt ll ll
|
||||||
|
// SS tttttt eeee ll ll aaaa
|
||||||
|
// SSSS tt ee ee ll ll aa
|
||||||
|
// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator"
|
||||||
|
// SS SS tt ee ll ll aa aa
|
||||||
|
// SSSS ttt eeeee llll llll aaaaa
|
||||||
|
//
|
||||||
|
// Copyright (c) 1995-2005 by Bradford W. Mott and the Stella team
|
||||||
|
//
|
||||||
|
// See the file "license" for information on usage and redistribution of
|
||||||
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
|
//
|
||||||
|
// $Id: TIADebug.hxx,v 1.4 2005-06-29 13:11:03 stephena Exp $
|
||||||
|
//============================================================================
|
||||||
|
|
||||||
#ifndef TIADEBUG_HXX
|
#ifndef TIADEBUG_HXX
|
||||||
#define TIADEBUG_HXX
|
#define TIADEBUG_HXX
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Console.cxx,v 1.62 2005-06-29 00:31:49 urchlay Exp $
|
// $Id: Console.cxx,v 1.63 2005-06-29 13:11:03 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
@ -46,7 +46,6 @@
|
||||||
#include "OSystem.hxx"
|
#include "OSystem.hxx"
|
||||||
#include "Menu.hxx"
|
#include "Menu.hxx"
|
||||||
#include "Debugger.hxx"
|
#include "Debugger.hxx"
|
||||||
#include "TIADebug.hxx"
|
|
||||||
#include "Version.hxx"
|
#include "Version.hxx"
|
||||||
|
|
||||||
#ifdef SNAPSHOT_SUPPORT
|
#ifdef SNAPSHOT_SUPPORT
|
||||||
|
@ -152,7 +151,6 @@ Console::Console(const uInt8* image, uInt32 size, OSystem* osystem)
|
||||||
|
|
||||||
// Remember what my media source is
|
// Remember what my media source is
|
||||||
myMediaSource = tia;
|
myMediaSource = tia;
|
||||||
myTIAdebugger = new TIADebug(tia);
|
|
||||||
myCart = cartridge;
|
myCart = cartridge;
|
||||||
|
|
||||||
// Reset, the system to its power-on state
|
// Reset, the system to its power-on state
|
||||||
|
@ -206,7 +204,6 @@ Console::~Console()
|
||||||
delete mySwitches;
|
delete mySwitches;
|
||||||
delete myControllers[0];
|
delete myControllers[0];
|
||||||
delete myControllers[1];
|
delete myControllers[1];
|
||||||
delete myTIAdebugger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: Console.hxx,v 1.35 2005-06-29 00:31:49 urchlay Exp $
|
// $Id: Console.hxx,v 1.36 2005-06-29 13:11:03 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef CONSOLE_HXX
|
#ifndef CONSOLE_HXX
|
||||||
|
@ -30,14 +30,13 @@ class System;
|
||||||
#include "Control.hxx"
|
#include "Control.hxx"
|
||||||
#include "Props.hxx"
|
#include "Props.hxx"
|
||||||
#include "TIA.hxx"
|
#include "TIA.hxx"
|
||||||
#include "TIADebug.hxx"
|
|
||||||
#include "Cart.hxx"
|
#include "Cart.hxx"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This class represents the entire game console.
|
This class represents the entire game console.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: Console.hxx,v 1.35 2005-06-29 00:31:49 urchlay Exp $
|
@version $Id: Console.hxx,v 1.36 2005-06-29 13:11:03 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class Console
|
class Console
|
||||||
{
|
{
|
||||||
|
@ -103,6 +102,11 @@ class Console
|
||||||
*/
|
*/
|
||||||
System& system() const { return *mySystem; }
|
System& system() const { return *mySystem; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
Get the cartridge used by the console which contains the ROM code
|
||||||
|
|
||||||
|
@return The cartridge for this console
|
||||||
|
*/
|
||||||
Cartridge& cartridge() const { return *myCart; }
|
Cartridge& cartridge() const { return *myCart; }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -160,8 +164,6 @@ class Console
|
||||||
*/
|
*/
|
||||||
void fry();
|
void fry();
|
||||||
|
|
||||||
TIADebug *tiaDebugger() { return myTIAdebugger; }
|
|
||||||
|
|
||||||
#ifdef DEVELOPER_SUPPORT
|
#ifdef DEVELOPER_SUPPORT
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
@ -234,9 +236,6 @@ class Console
|
||||||
// Pointer to the 6502 based system being emulated
|
// Pointer to the 6502 based system being emulated
|
||||||
System* mySystem;
|
System* mySystem;
|
||||||
|
|
||||||
// Pointer to TIADebug
|
|
||||||
TIADebug *myTIAdebugger;
|
|
||||||
|
|
||||||
// Pointer to the Cartridge (the debugger needs it)
|
// Pointer to the Cartridge (the debugger needs it)
|
||||||
Cartridge *myCart;
|
Cartridge *myCart;
|
||||||
};
|
};
|
||||||
|
|
|
@ -13,7 +13,7 @@
|
||||||
// See the file "license" for information on usage and redistribution of
|
// See the file "license" for information on usage and redistribution of
|
||||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||||
//
|
//
|
||||||
// $Id: MediaSrc.hxx,v 1.10 2005-06-16 00:55:58 stephena Exp $
|
// $Id: MediaSrc.hxx,v 1.11 2005-06-29 13:11:03 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#ifndef MEDIASOURCE_HXX
|
#ifndef MEDIASOURCE_HXX
|
||||||
|
@ -30,7 +30,7 @@ class Sound;
|
||||||
This class provides an interface for accessing graphics and audio data.
|
This class provides an interface for accessing graphics and audio data.
|
||||||
|
|
||||||
@author Bradford W. Mott
|
@author Bradford W. Mott
|
||||||
@version $Id: MediaSrc.hxx,v 1.10 2005-06-16 00:55:58 stephena Exp $
|
@version $Id: MediaSrc.hxx,v 1.11 2005-06-29 13:11:03 stephena Exp $
|
||||||
*/
|
*/
|
||||||
class MediaSource
|
class MediaSource
|
||||||
{
|
{
|
||||||
|
@ -111,5 +111,5 @@ class MediaSource
|
||||||
// Assignment operator isn't supported by this class so make it private
|
// Assignment operator isn't supported by this class so make it private
|
||||||
MediaSource& operator = (const MediaSource&);
|
MediaSource& operator = (const MediaSource&);
|
||||||
};
|
};
|
||||||
#endif
|
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
|
@ -32,6 +32,10 @@
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
|
#ifdef SOUND_SUPPORT
|
||||||
|
|
||||||
|
#include "bspf.hxx"
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
extern "C" {
|
extern "C" {
|
||||||
#endif
|
#endif
|
||||||
|
@ -40,23 +44,6 @@ extern "C" {
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
|
|
||||||
|
|
||||||
/* define some data types to keep it platform independent */
|
|
||||||
#ifdef WIN32
|
|
||||||
#define int8 char
|
|
||||||
#define int16 short
|
|
||||||
#define int32 int
|
|
||||||
#else
|
|
||||||
#define int8 char
|
|
||||||
#define int16 int
|
|
||||||
#define int32 long
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define uint8 unsigned int8
|
|
||||||
#define uint16 unsigned int16
|
|
||||||
#define uint32 unsigned int32
|
|
||||||
|
|
||||||
|
|
||||||
/* CONSTANT DEFINITIONS */
|
/* CONSTANT DEFINITIONS */
|
||||||
|
|
||||||
/* definitions for AUDCx (15, 16) */
|
/* definitions for AUDCx (15, 16) */
|
||||||
|
@ -102,13 +89,13 @@ extern "C" {
|
||||||
/* LOCAL GLOBAL VARIABLE DEFINITIONS */
|
/* LOCAL GLOBAL VARIABLE DEFINITIONS */
|
||||||
|
|
||||||
/* structures to hold the 6 tia sound control bytes */
|
/* structures to hold the 6 tia sound control bytes */
|
||||||
static uint8 AUDC[2]; /* AUDCx (15, 16) */
|
static uInt8 AUDC[2]; /* AUDCx (15, 16) */
|
||||||
static uint8 AUDF[2]; /* AUDFx (17, 18) */
|
static uInt8 AUDF[2]; /* AUDFx (17, 18) */
|
||||||
static uint8 AUDV[2]; /* AUDVx (19, 1A) */
|
static uInt8 AUDV[2]; /* AUDVx (19, 1A) */
|
||||||
|
|
||||||
static uint8 Outvol[2]; /* last output volume for each channel */
|
static uInt8 Outvol[2]; /* last output volume for each channel */
|
||||||
|
|
||||||
static uint32 volume; /* output sample volume percentage */
|
static uInt32 volume; /* output sample volume percentage */
|
||||||
|
|
||||||
/* Initialze the bit patterns for the polynomials. */
|
/* Initialze the bit patterns for the polynomials. */
|
||||||
|
|
||||||
|
@ -117,10 +104,10 @@ static uint32 volume; /* output sample volume percentage */
|
||||||
/* single bit per byte keeps the math simple, which is important for */
|
/* single bit per byte keeps the math simple, which is important for */
|
||||||
/* efficient processing. */
|
/* efficient processing. */
|
||||||
|
|
||||||
static uint8 Bit4[POLY4_SIZE] =
|
static uInt8 Bit4[POLY4_SIZE] =
|
||||||
{ 1,1,0,1,1,1,0,0,0,0,1,0,1,0,0 };
|
{ 1,1,0,1,1,1,0,0,0,0,1,0,1,0,0 };
|
||||||
|
|
||||||
static uint8 Bit5[POLY5_SIZE] =
|
static uInt8 Bit5[POLY5_SIZE] =
|
||||||
{ 0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1 };
|
{ 0,0,1,0,1,1,0,0,1,1,1,1,1,0,0,0,1,1,0,1,1,1,0,1,0,1,0,0,0,0,1 };
|
||||||
|
|
||||||
/* I've treated the 'Div by 31' counter as another polynomial because of */
|
/* I've treated the 'Div by 31' counter as another polynomial because of */
|
||||||
|
@ -128,28 +115,28 @@ static uint8 Bit5[POLY5_SIZE] =
|
||||||
/* has a 13:18 ratio (of course, 13+18 = 31). This could also be */
|
/* has a 13:18 ratio (of course, 13+18 = 31). This could also be */
|
||||||
/* implemented by using counters. */
|
/* implemented by using counters. */
|
||||||
|
|
||||||
static uint8 Div31[POLY5_SIZE] =
|
static uInt8 Div31[POLY5_SIZE] =
|
||||||
{ 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 };
|
{ 0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0 };
|
||||||
|
|
||||||
/* Rather than have a table with 511 entries, I use a random number */
|
/* Rather than have a table with 511 entries, I use a random number */
|
||||||
/* generator. */
|
/* generator. */
|
||||||
|
|
||||||
static uint8 Bit9[POLY9_SIZE];
|
static uInt8 Bit9[POLY9_SIZE];
|
||||||
|
|
||||||
static uint8 P4[2]; /* Position pointer for the 4-bit POLY array */
|
static uInt8 P4[2]; /* Position pointer for the 4-bit POLY array */
|
||||||
static uint8 P5[2]; /* Position pointer for the 5-bit POLY array */
|
static uInt8 P5[2]; /* Position pointer for the 5-bit POLY array */
|
||||||
static uint16 P9[2]; /* Position pointer for the 9-bit POLY array */
|
static uInt16 P9[2]; /* Position pointer for the 9-bit POLY array */
|
||||||
|
|
||||||
static uint8 Div_n_cnt[2]; /* Divide by n counter. one for each channel */
|
static uInt8 Div_n_cnt[2]; /* Divide by n counter. one for each channel */
|
||||||
static uint8 Div_n_max[2]; /* Divide by n maximum, one for each channel */
|
static uInt8 Div_n_max[2]; /* Divide by n maximum, one for each channel */
|
||||||
|
|
||||||
|
|
||||||
/* In my routines, I treat the sample output as another divide by N counter. */
|
/* In my routines, I treat the sample output as another divide by N counter. */
|
||||||
/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */
|
/* For better accuracy, the Samp_n_cnt has a fixed binary decimal point */
|
||||||
/* which has 8 binary digits to the right of the decimal point. */
|
/* which has 8 binary digits to the right of the decimal point. */
|
||||||
|
|
||||||
static uint16 Samp_n_max; /* Sample max, multiplied by 256 */
|
static uInt16 Samp_n_max; /* Sample max, multiplied by 256 */
|
||||||
static uint16 Samp_n_cnt; /* Sample cnt. */
|
static uInt16 Samp_n_cnt; /* Sample cnt. */
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -168,10 +155,10 @@ static uint16 Samp_n_cnt; /* Sample cnt. */
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Tia_sound_init (uint16 sample_freq, uint16 playback_freq)
|
void Tia_sound_init (uInt16 sample_freq, uInt16 playback_freq)
|
||||||
{
|
{
|
||||||
uint8 chan;
|
uInt8 chan;
|
||||||
int16 n;
|
Int16 n;
|
||||||
|
|
||||||
/* fill the 9bit polynomial with random bits */
|
/* fill the 9bit polynomial with random bits */
|
||||||
for (n=0; n<POLY9_SIZE; n++)
|
for (n=0; n<POLY9_SIZE; n++)
|
||||||
|
@ -180,7 +167,7 @@ void Tia_sound_init (uint16 sample_freq, uint16 playback_freq)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* calculate the sample 'divide by N' value based on the playback freq. */
|
/* calculate the sample 'divide by N' value based on the playback freq. */
|
||||||
Samp_n_max = (uint16)(((uint32)sample_freq<<8)/playback_freq);
|
Samp_n_max = (uInt16)(((uInt32)sample_freq<<8)/playback_freq);
|
||||||
Samp_n_cnt = 0; /* initialize all bits of the sample counter */
|
Samp_n_cnt = 0; /* initialize all bits of the sample counter */
|
||||||
|
|
||||||
/* initialize the local globals */
|
/* initialize the local globals */
|
||||||
|
@ -218,10 +205,10 @@ void Tia_sound_init (uint16 sample_freq, uint16 playback_freq)
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Update_tia_sound (uint16 addr, uint8 val)
|
void Update_tia_sound (uInt16 addr, uInt8 val)
|
||||||
{
|
{
|
||||||
uint16 new_val = 0;
|
uInt16 new_val = 0;
|
||||||
uint8 chan;
|
uInt8 chan;
|
||||||
|
|
||||||
/* determine which address was changed */
|
/* determine which address was changed */
|
||||||
switch (addr)
|
switch (addr)
|
||||||
|
@ -318,11 +305,11 @@ void Update_tia_sound (uint16 addr, uint8 val)
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Tia_process (register unsigned char *buffer, register uint16 n)
|
void Tia_process (register unsigned char *buffer, register uInt16 n)
|
||||||
{
|
{
|
||||||
register uint8 audc0,audv0,audc1,audv1;
|
register uInt8 audc0,audv0,audc1,audv1;
|
||||||
register uint8 div_n_cnt0,div_n_cnt1;
|
register uInt8 div_n_cnt0,div_n_cnt1;
|
||||||
register uint8 p5_0, p5_1,outvol_0,outvol_1;
|
register uInt8 p5_0, p5_1,outvol_0,outvol_1;
|
||||||
|
|
||||||
audc0 = AUDC[0];
|
audc0 = AUDC[0];
|
||||||
audv0 = AUDV[0];
|
audv0 = AUDV[0];
|
||||||
|
@ -480,8 +467,8 @@ void Tia_process (register unsigned char *buffer, register uint16 n)
|
||||||
/* calculate the latest output value and place in buffer
|
/* calculate the latest output value and place in buffer
|
||||||
scale the volume by 128, since this is the default silence value
|
scale the volume by 128, since this is the default silence value
|
||||||
when using unsigned 8-bit samples in SDL */
|
when using unsigned 8-bit samples in SDL */
|
||||||
*(buffer++) = ((uint8) ((((uint32)outvol_0 + (uint32)outvol_1) * volume) / 100))/2 + 128;
|
*(buffer++) = ((uInt8) ((((uInt32)outvol_0 + (uInt32)outvol_1) * volume) / 100))/2 + 128;
|
||||||
/* *(buffer++) = ((((uint32)outvol_0 + (uint32)outvol_1) * volume) / 100); */
|
/* *(buffer++) = ((((uInt32)outvol_0 + (uInt32)outvol_1) * volume) / 100); */
|
||||||
|
|
||||||
/* and indicate one less byte to process */
|
/* and indicate one less byte to process */
|
||||||
n--;
|
n--;
|
||||||
|
@ -558,7 +545,7 @@ void Tia_set_registers (unsigned char reg1, unsigned char reg2, unsigned char re
|
||||||
|
|
||||||
void Tia_clear_registers ()
|
void Tia_clear_registers ()
|
||||||
{
|
{
|
||||||
uint8 chan;
|
uInt8 chan;
|
||||||
for (chan = CHAN1; chan <= CHAN2; chan++)
|
for (chan = CHAN1; chan <= CHAN2; chan++)
|
||||||
{
|
{
|
||||||
Outvol[chan] = 0;
|
Outvol[chan] = 0;
|
||||||
|
@ -612,9 +599,9 @@ void Tia_volume (unsigned int percent)
|
||||||
/* */
|
/* */
|
||||||
/*****************************************************************************/
|
/*****************************************************************************/
|
||||||
|
|
||||||
void Tia_process_2 (register unsigned char *buffer, register uint16 n)
|
void Tia_process_2 (register unsigned char *buffer, register uInt16 n)
|
||||||
{
|
{
|
||||||
register uint8 chan;
|
register uInt8 chan;
|
||||||
|
|
||||||
/* loop until the buffer is filled */
|
/* loop until the buffer is filled */
|
||||||
while (n)
|
while (n)
|
||||||
|
@ -715,3 +702,5 @@ void Tia_process_2 (register unsigned char *buffer, register uint16 n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif // SOUND_SUPPORT
|
||||||
|
|
Loading…
Reference in New Issue