mirror of
https://github.com/JetSetIlly/Gopher2600.git
synced 2024-06-02 20:18:20 -04:00
updated README and lint fixes
This commit is contained in:
parent
e5e3f0b7fa
commit
9a5fb8fd1f
|
@ -13,6 +13,7 @@ The key features of the emulator:
|
|||
* Network access through [PlusROM](#plusrom) emulation
|
||||
* [Savekey](#savekey) support
|
||||
* [CRT Effects](#crt-effects)
|
||||
* Stereo audio output
|
||||
* Support for common [TIA revisions](#tia-revisions)
|
||||
* Implementation of [Movie Cart](#movie-cart)
|
||||
|
||||
|
@ -84,14 +85,13 @@ Viewer](#statistics-viewer) for details.
|
|||
|
||||
There are very few options available to improve performance of the emulator.
|
||||
|
||||
One thing you can do is to compile the project with version 1.17 of the Go
|
||||
compiler. This compiler version is currently in beta but has been extensively
|
||||
used during testing of `Gopher2600` with no problems.
|
||||
One thing you can do is to compile the project with at least version 1.17 of
|
||||
the Go compiler.
|
||||
|
||||
Turning CRT effects off will likely have no effect.
|
||||
|
||||
For ROMs that use the [ARM](#arm7tdmi-emulation) chip, setting the ARM to
|
||||
`immediate mode` will eliminate cycle counting and hence give a slight
|
||||
`immediate mode` will eliminate cycle counting and hence give a modest
|
||||
performance boost.
|
||||
|
||||
## Compilation
|
||||
|
|
|
@ -425,7 +425,6 @@ func (dbg *Debugger) contEmulation(inputter terminal.Input) error {
|
|||
dbg.printLine(terminal.StyleError, "CPU halted mid-instruction. next step may be inaccurate.")
|
||||
dbg.vcs.CPU.Interrupted = true
|
||||
}
|
||||
|
||||
} else if dbg.vcs.CPU.LastResult.Final {
|
||||
var err error
|
||||
|
||||
|
|
|
@ -66,6 +66,6 @@ const (
|
|||
// of the controller.
|
||||
ReqControllerChange FeatureReq = "ReqControllerChange" // plugging.PortID, plugging.PeripheralID
|
||||
|
||||
// a cartridge event has occured. see mapper.Event for explanation
|
||||
|
||||
ReqCartridgeEvent FeatureReq = "ReqCartridgeEvent" // mapper.Event
|
||||
)
|
||||
|
|
|
@ -99,7 +99,7 @@ func (seq *Sequence) bind(idxTexture int) uint32 {
|
|||
return id
|
||||
}
|
||||
|
||||
// Clear texture. Black pixels
|
||||
// Clear texture. Black pixels.
|
||||
func (seq *Sequence) Clear(idxTexture int) uint32 {
|
||||
id := seq.bind(idxTexture)
|
||||
gl.BindTexture(gl.TEXTURE_2D, id)
|
||||
|
|
|
@ -407,7 +407,7 @@ func (img *SdlImgui) imguiSwatch(col uint8, size float32) (clicked bool) {
|
|||
// shows tooltip on hover of the previous imgui digest/group. useful for simple
|
||||
// tooltips.
|
||||
func imguiTooltipSimple(tooltip string) {
|
||||
// split string on newline and display with seperate calls to imgui.Text()
|
||||
// split string on newline and display with separate calls to imgui.Text()
|
||||
tooltip = strings.TrimSpace(tooltip)
|
||||
if tooltip != "" && imgui.IsItemHovered() {
|
||||
s := strings.Split(tooltip, "\n")
|
||||
|
|
|
@ -167,7 +167,7 @@ func (plt *platform) postRender() {
|
|||
plt.window.GLSwap()
|
||||
}
|
||||
|
||||
// toggle the full screeens state. does not capture mouse
|
||||
// toggle the full screeens state. does not capture mouse.
|
||||
func (plt *platform) setFullScreen(fullScreen bool) {
|
||||
plt.fullScreen = fullScreen
|
||||
if plt.fullScreen {
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
|
||||
const notificationDuration = 60 // frames
|
||||
|
||||
// peripheralNotification is used to draw an indicator on the screen for controller change events
|
||||
// peripheralNotification is used to draw an indicator on the screen for controller change events.
|
||||
type peripheralNotification struct {
|
||||
frames int
|
||||
icon string
|
||||
|
@ -49,7 +49,6 @@ func (ca *peripheralNotification) set(peripheral plugging.PeripheralID) {
|
|||
ca.icon = ""
|
||||
return
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (ca *peripheralNotification) tick() {
|
||||
|
@ -102,7 +101,7 @@ func (ca *peripheralNotification) draw(win *playScr) {
|
|||
imgui.End()
|
||||
}
|
||||
|
||||
// cartridgeEventNotification is used to draw an indicator on the screen for cartride
|
||||
// cartridgeEventNotification is used to draw an indicator on the screen for cartridge
|
||||
// events defined in the mapper package.
|
||||
type cartridgeEventNotification struct {
|
||||
open bool
|
||||
|
|
|
@ -62,7 +62,7 @@ type screenCrit struct {
|
|||
// critical sectioning
|
||||
section sync.Mutex
|
||||
|
||||
// the most recent frameInfo information from the televsion. updated via
|
||||
// the most recent frameInfo information from the television. updated via
|
||||
// Resize() and NewFrame()
|
||||
frameInfo television.FrameInfo
|
||||
|
||||
|
|
|
@ -25,24 +25,24 @@ type Event int
|
|||
// List of currently defined activities.
|
||||
const (
|
||||
// LoadStarted is raised for Supercharger mapper whenever a new tape read
|
||||
// sequence if started
|
||||
// sequence if started.
|
||||
EventSuperchargerLoadStarted Event = iota
|
||||
|
||||
// If Supercharger is loading from a fastload binary then this event is
|
||||
// raised when the loading has been completed
|
||||
// raised when the loading has been completed.
|
||||
EventSuperchargerFastloadEnded
|
||||
|
||||
// If Supercharger is loading from a sound file (eg. mp3 file) then these
|
||||
// events area raised when the loading has started/completed
|
||||
// events area raised when the loading has started/completed.
|
||||
EventSuperchargerSoundloadStarted
|
||||
EventSuperchargerSoundloadEnded
|
||||
|
||||
// tape is rewinding
|
||||
// tape is rewinding.
|
||||
EventSuperchargerSoundloadRewind
|
||||
|
||||
// PlusROM cartridge has been inserted
|
||||
// PlusROM cartridge has been inserted.
|
||||
EventPlusROMInserted
|
||||
|
||||
// PlusROM network activity
|
||||
// PlusROM network activity.
|
||||
EventPlusROMNetwork
|
||||
)
|
||||
|
|
|
@ -30,7 +30,7 @@ var coreData []byte
|
|||
//
|
||||
// these *must* relate to the core.bin embedded above
|
||||
//
|
||||
// !!TODO: embed core.bin address constants, generated during the assembly process of core.bin
|
||||
// !!TODO: embed core.bin address constants, generated during the assembly process of core.bin.
|
||||
const (
|
||||
// processAddress().
|
||||
addrTitleLoop = 0xb50
|
||||
|
|
|
@ -798,7 +798,6 @@ func (cart *Moviecart) writeBackgroundStream(addr uint16, readCol bool) {
|
|||
const chunkSize = 8 * 512
|
||||
|
||||
func (cart *Moviecart) readField() {
|
||||
|
||||
// the usual playback condition
|
||||
if !cart.state.paused && cart.state.streamChunk > 0 {
|
||||
dataOffset := cart.state.streamChunk * chunkSize
|
||||
|
|
|
@ -26,7 +26,7 @@ import (
|
|||
)
|
||||
|
||||
// Sentinal error indicating a specific problem with the attempt to load the
|
||||
// child cartridge into the PlusROM
|
||||
// child cartridge into the PlusROM.
|
||||
const NotAPlusROM = "not a plus rom: %s"
|
||||
|
||||
// PlusROM wraps another mapper.CartMapper inside a network aware format.
|
||||
|
|
|
@ -23,7 +23,7 @@ import (
|
|||
"strings"
|
||||
|
||||
// "github.com/go-audio/audio"
|
||||
// "github.com/go-audio/wav"
|
||||
// "github.com/go-audio/wav".
|
||||
|
||||
"github.com/hajimehoshi/go-mp3"
|
||||
"github.com/jetsetilly/gopher2600/cartridgeloader"
|
||||
|
|
|
@ -39,7 +39,7 @@ type FrameInfo struct {
|
|||
// to change.
|
||||
VSynced bool
|
||||
|
||||
// Stable is true once the televsion frame has been consistent for N frames
|
||||
// Stable is true once the television frame has been consistent for N frames
|
||||
// after reset. This is useful for pixel renderers so that they don't show
|
||||
// the loose frames that often occur after VCS reset.
|
||||
//
|
||||
|
|
|
@ -110,7 +110,7 @@ func (lmtr *limiter) setRate(tv *Television, fps float32) {
|
|||
lmtr.measureTime = time.Now()
|
||||
}
|
||||
|
||||
// checkFrame should be called every frame
|
||||
// checkFrame should be called every frame.
|
||||
func (lmtr *limiter) checkFrame() {
|
||||
lmtr.measureCt++
|
||||
if lmtr.active && !lmtr.visualUpdates {
|
||||
|
@ -118,7 +118,7 @@ func (lmtr *limiter) checkFrame() {
|
|||
}
|
||||
}
|
||||
|
||||
// checkFrame should be called every scanline
|
||||
// checkFrame should be called every scanline.
|
||||
func (lmtr *limiter) checkScanline() {
|
||||
if lmtr.active && lmtr.visualUpdates {
|
||||
<-lmtr.pulse.C
|
||||
|
|
|
@ -710,7 +710,7 @@ func (tv *Television) GetReqSpecID() string {
|
|||
}
|
||||
|
||||
// GetFrameInfo returns the television's current frame information. FPS and
|
||||
// RefreshRate is returned by GetReqFPS()
|
||||
// RefreshRate is returned by GetReqFPS().
|
||||
func (tv *Television) GetFrameInfo() FrameInfo {
|
||||
return tv.state.frameInfo
|
||||
}
|
||||
|
|
|
@ -350,7 +350,7 @@ func (tia *TIA) resolveDelayedEvents() {
|
|||
}
|
||||
}
|
||||
|
||||
// Step moves the state of the tia forward one video cycle
|
||||
// Step moves the state of the tia forward one video cycle.
|
||||
func (tia *TIA) Step(readMemory bool) {
|
||||
// update debugging information
|
||||
tia.videoCycles++
|
||||
|
|
|
@ -199,7 +199,6 @@ func (bs *BallSprite) rsync(adjustment int) {
|
|||
|
||||
// returns true if pixel has changed.
|
||||
func (bs *BallSprite) tick() bool {
|
||||
|
||||
if *bs.tia.hblank {
|
||||
// early return if nothing to do
|
||||
if !(bs.tia.hmove.Clk && bs.MoreHMOVE) {
|
||||
|
|
|
@ -224,7 +224,6 @@ func (ms *MissileSprite) rsync(adjustment int) {
|
|||
|
||||
// returns true if pixel has changed.
|
||||
func (ms *MissileSprite) tick(resetToPlayer bool) bool {
|
||||
|
||||
if *ms.tia.hblank {
|
||||
// early return if nothing to do
|
||||
if !ms.tia.hmove.Clk {
|
||||
|
|
|
@ -321,7 +321,7 @@ func (p *Float) RegisterCallback(f func(value Value) error) {
|
|||
// The Generic prefs type does not have a way of registering a callback
|
||||
// function. It is also slower than other prefs types because it must protect
|
||||
// potential critical sections with a mutex (other types can use an atomic
|
||||
// value)
|
||||
// value).
|
||||
type Generic struct {
|
||||
pref
|
||||
crit sync.Mutex
|
||||
|
|
Loading…
Reference in a new issue