Annotation of nono/vm/adpcm.h, revision 1.1.1.1

1.1       root        1: //
                      2: // nono
                      3: // Copyright (C) 2022 nono project
                      4: // Licensed under nono-license.txt
                      5: //
                      6: 
                      7: //
                      8: // ADPCM (MSM6258V)
                      9: //
                     10: 
                     11: #pragma once
                     12: 
                     13: #include "device.h"
                     14: #include "event.h"
                     15: 
                     16: class ADPCMDevice : public IODevice
                     17: {
                     18:        using inherited = IODevice;
                     19: 
                     20:        static const int baseaddr = 0xe92000;
                     21: 
                     22:        static const uint8 STAT_PLAY    = 0x80;
                     23: 
                     24:        static const uint8 REC_START    = 0x04;
                     25:        static const uint8 PLAY_START   = 0x02;
                     26:        static const uint8 STOP                 = 0x01;
                     27: 
                     28:  public:
                     29:        ADPCMDevice();
                     30:        virtual ~ADPCMDevice() override;
                     31: 
                     32:        void ResetHard(bool poweron) override;
                     33: 
                     34:        // CT1 によるクロック切り替え。OPM から呼ばれる。
                     35:        void SetClock(bool);
                     36: 
                     37:        // DMAC から呼ばれる。
                     38:        void AssertDACK(bool tc);
                     39:        void NegateDACK();
                     40: 
                     41:  protected:
                     42:        // BusIO インタフェース
                     43:        static const uint32 NPORT = 2;
                     44:        uint64 Read(uint32 offset);
                     45:        uint64 Write(uint32 offset, uint32 data);
                     46:        uint64 Peek(uint32 offset);
                     47: 
                     48:  private:
                     49:        void StartPlay();
                     50: 
                     51:        void EventCallback(Event&);
                     52: 
                     53:        bool playing {};
                     54:        bool dack {};
                     55:        int clk {};
                     56:        int div {};
                     57: 
                     58:        Event event { this };
                     59: };
                     60: 
                     61: extern ADPCMDevice *gADPCM;

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.