Previous 199869 Revisions Next

r21872 Friday 15th March, 2013 at 09:16:10 UTC by Fabio Priuli
minor cleanup. nw.
[src/mess/machine]sns_sdd1.c sns_sdd1.h

trunk/src/mess/machine/sns_sdd1.c
r21871r21872
2121
2222// Input Manager
2323
24void SDD1__IM::IM_prepareDecomp(UINT32 in_buf)
24void SDD1_IM::IM_prepareDecomp(UINT32 in_buf)
2525{
2626   m_byte_ptr = in_buf;
2727   m_bit_count = 4;
2828}
2929
30UINT8 SDD1__IM::IM_getCodeword(UINT8 *ROM, UINT32 *mmc, const UINT8 code_len)
30UINT8 SDD1_IM::IM_getCodeword(UINT8 *ROM, UINT32 *mmc, const UINT8 code_len)
3131{
3232   UINT8 codeword = ROM[SSD1_ADD(m_byte_ptr)] << m_bit_count;
3333
r21871r21872
5050
5151// GCD
5252
53void SDD1__GCD::GCD_getRunCount(UINT8 *ROM, UINT32 *mmc, UINT8 code_num, UINT8* MPScount, UINT8* LPSind)
53void SDD1_GCD::GCD_getRunCount(UINT8 *ROM, UINT32 *mmc, UINT8 code_num, UINT8* MPScount, UINT8* LPSind)
5454{
5555   const UINT8 run_count[] =
5656   {
r21871r21872
103103
104104// BG
105105
106void SDD1__BG::BG_prepareDecomp()
106void SDD1_BG::BG_prepareDecomp()
107107{
108108   m_MPScount = 0;
109109   m_LPSind = 0;
110110}
111111
112UINT8 SDD1__BG::BG_getBit(UINT8 *ROM, UINT32 *mmc, UINT8* endOfRun)
112UINT8 SDD1_BG::BG_getBit(UINT8 *ROM, UINT32 *mmc, UINT8* endOfRun)
113113{
114114   UINT8 bit;
115115
r21871r21872
143143
144144// PEM
145145
146struct SDD1__PEM_state
146struct SDD1_PEM_state
147147{
148148   UINT8 code_num;
149149   UINT8 nextIfMPS;
150150   UINT8 nextIfLPS;
151151};
152152
153static const SDD1__PEM_state PEM_evolution_table[33] =
153static const SDD1_PEM_state PEM_evolution_table[33] =
154154{
155155   { 0,25,25},
156156   { 0, 2, 1},
r21871r21872
187187   { 7,24,22}
188188};
189189
190void SDD1__PEM::PEM_prepareDecomp()
190void SDD1_PEM::PEM_prepareDecomp()
191191{
192192   for (int i = 0; i < 32; i++)
193193   {
r21871r21872
196196   }
197197}
198198
199UINT8 SDD1__PEM::PEM_getBit(UINT8 *ROM, UINT32 *mmc, UINT8 context)
199UINT8 SDD1_PEM::PEM_getBit(UINT8 *ROM, UINT32 *mmc, UINT8 context)
200200{
201201   UINT8 endOfRun;
202202   UINT8 bit;
203203
204   SDD1__PEM_ContextInfo *pContInfo = &(m_contextInfo)[context];
204   SDD1_PEM_ContextInfo *pContInfo = &(m_contextInfo)[context];
205205   UINT8 currStatus = pContInfo->status;
206   const SDD1__PEM_state* pState = &(PEM_evolution_table[currStatus]);
206   const SDD1_PEM_state* pState = &(PEM_evolution_table[currStatus]);
207207   UINT8 currentMPS = pContInfo->MPS;
208208
209209   bit = m_BG[pState->code_num]->BG_getBit(ROM, mmc, &endOfRun);
r21871r21872
229229
230230// CM
231231
232void SDD1__CM::CM_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte)
232void SDD1_CM::CM_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte)
233233{
234234   INT32 i = 0;
235235   m_bitplanesInfo = ROM[SSD1_ADD(first_byte)] & 0xc0;
r21871r21872
253253   }
254254}
255255
256UINT8 SDD1__CM::CM_getBit(UINT8 *ROM, UINT32 *mmc)
256UINT8 SDD1_CM::CM_getBit(UINT8 *ROM, UINT32 *mmc)
257257{
258258   UINT8 currContext;
259259   UINT16 *context_bits;
r21871r21872
310310
311311// OL
312312
313void SDD1__OL::OL_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte, UINT16 out_len, UINT8 *out_buf)
313void SDD1_OL::OL_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte, UINT16 out_len, UINT8 *out_buf)
314314{
315315   m_bitplanesInfo = ROM[SSD1_ADD(first_byte)] & 0xc0;
316316   m_length = out_len;
317317   m_buffer = out_buf;
318318}
319319
320void SDD1__OL::OL_launch(UINT8 *ROM, UINT32 *mmc)
320void SDD1_OL::OL_launch(UINT8 *ROM, UINT32 *mmc)
321321{
322322   UINT8 i;
323323   UINT8 register1 = 0, register2 = 0;
r21871r21872
367367
368368// S-DD1
369369
370SDD1__emu::SDD1__emu(running_machine &machine)
370SDD1_emu::SDD1_emu(running_machine &machine)
371371      : m_machine(machine)
372372{
373   m_IM = auto_alloc(machine, SDD1__IM());
374   m_GCD = auto_alloc(machine, SDD1__GCD(m_IM));
375   m_BG0 = auto_alloc(machine, SDD1__BG(m_GCD, 0));
376   m_BG1 = auto_alloc(machine, SDD1__BG(m_GCD, 1));
377   m_BG2 = auto_alloc(machine, SDD1__BG(m_GCD, 2));
378   m_BG3 = auto_alloc(machine, SDD1__BG(m_GCD, 3));
379   m_BG4 = auto_alloc(machine, SDD1__BG(m_GCD, 4));
380   m_BG5 = auto_alloc(machine, SDD1__BG(m_GCD, 5));
381   m_BG6 = auto_alloc(machine, SDD1__BG(m_GCD, 6));
382   m_BG7 = auto_alloc(machine, SDD1__BG(m_GCD, 7));
383   m_PEM = auto_alloc(machine, SDD1__PEM(m_BG0, m_BG1, m_BG2, m_BG3,
373   m_IM = auto_alloc(machine, SDD1_IM());
374   m_GCD = auto_alloc(machine, SDD1_GCD(m_IM));
375   m_BG0 = auto_alloc(machine, SDD1_BG(m_GCD, 0));
376   m_BG1 = auto_alloc(machine, SDD1_BG(m_GCD, 1));
377   m_BG2 = auto_alloc(machine, SDD1_BG(m_GCD, 2));
378   m_BG3 = auto_alloc(machine, SDD1_BG(m_GCD, 3));
379   m_BG4 = auto_alloc(machine, SDD1_BG(m_GCD, 4));
380   m_BG5 = auto_alloc(machine, SDD1_BG(m_GCD, 5));
381   m_BG6 = auto_alloc(machine, SDD1_BG(m_GCD, 6));
382   m_BG7 = auto_alloc(machine, SDD1_BG(m_GCD, 7));
383   m_PEM = auto_alloc(machine, SDD1_PEM(m_BG0, m_BG1, m_BG2, m_BG3,
384384                                 m_BG4, m_BG5, m_BG6, m_BG7));
385   m_CM = auto_alloc(machine, SDD1__CM(m_PEM));
386   m_OL = auto_alloc(machine, SDD1__OL(m_CM));
385   m_CM = auto_alloc(machine, SDD1_CM(m_PEM));
386   m_OL = auto_alloc(machine, SDD1_OL(m_CM));
387387}
388388
389void SDD1__emu::SDD1emu_decompress(UINT8 *ROM, UINT32 *mmc, UINT32 in_buf, UINT16 out_len, UINT8 *out_buf)
389void SDD1_emu::SDD1emu_decompress(UINT8 *ROM, UINT32 *mmc, UINT32 in_buf, UINT16 out_len, UINT8 *out_buf)
390390{
391391   m_IM->IM_prepareDecomp(in_buf);
392392   m_BG0->BG_prepareDecomp();
r21871r21872
427427
428428void sns_rom_sdd1_device::device_start()
429429{
430   m_sdd1emu = auto_alloc(machine(), SDD1__emu(machine()));
430   m_sdd1emu = auto_alloc(machine(), SDD1_emu(machine()));
431431
432432   m_buffer.data = (UINT8*)auto_alloc_array(machine(), UINT8, 0x10000);
433433   m_buffer.ready = 0;
trunk/src/mess/machine/sns_sdd1.h
r21871r21872
55
66// misc classes for the S-DD1
77
8class SDD1__IM //Input Manager
8class SDD1_IM //Input Manager
99{
1010public:
11   SDD1__IM() {}
11   SDD1_IM() {}
1212
1313   UINT32 m_byte_ptr;
1414   UINT8 m_bit_count;
r21871r21872
1717   UINT8 IM_getCodeword(UINT8 *ROM, UINT32 *mmc, const UINT8 code_len);
1818};
1919
20class SDD1__GCD //Golomb-Code Decoder
20class SDD1_GCD //Golomb-Code Decoder
2121{
2222public:
23   SDD1__GCD(SDD1__IM* associatedIM)
23   SDD1_GCD(SDD1_IM* associatedIM)
2424   : m_IM(associatedIM) { }
2525
26   SDD1__IM* m_IM;
26   SDD1_IM* m_IM;
2727
2828   void GCD_getRunCount(UINT8 *ROM, UINT32 *mmc, UINT8 code_num, UINT8* MPScount, UINT8* LPSind);
2929};
3030
31class SDD1__BG // Bits Generator
31class SDD1_BG // Bits Generator
3232{
3333public:
34   SDD1__BG(SDD1__GCD* associatedGCD, UINT8 code)
34   SDD1_BG(SDD1_GCD* associatedGCD, UINT8 code)
3535   : m_code_num(code),
3636   m_GCD(associatedGCD) { }
3737
3838   UINT8 m_code_num;
3939   UINT8 m_MPScount;
4040   UINT8 m_LPSind;
41   SDD1__GCD* m_GCD;
41   SDD1_GCD* m_GCD;
4242
4343   void BG_prepareDecomp();
4444   UINT8 BG_getBit(UINT8 *ROM, UINT32 *mmc, UINT8* endOfRun);
4545} ;
4646
47struct SDD1__PEM_ContextInfo
47struct SDD1_PEM_ContextInfo
4848{
4949   UINT8 status;
5050   UINT8 MPS;
5151};
5252
53class SDD1__PEM //Probability Estimation Module
53class SDD1_PEM //Probability Estimation Module
5454{
5555public:
56   SDD1__PEM(
57            SDD1__BG* associatedBG0, SDD1__BG* associatedBG1,
58            SDD1__BG* associatedBG2, SDD1__BG* associatedBG3,
59            SDD1__BG* associatedBG4, SDD1__BG* associatedBG5,
60            SDD1__BG* associatedBG6, SDD1__BG* associatedBG7)
56   SDD1_PEM(
57            SDD1_BG* associatedBG0, SDD1_BG* associatedBG1,
58            SDD1_BG* associatedBG2, SDD1_BG* associatedBG3,
59            SDD1_BG* associatedBG4, SDD1_BG* associatedBG5,
60            SDD1_BG* associatedBG6, SDD1_BG* associatedBG7)
6161   {
6262      m_BG[0] = associatedBG0;
6363      m_BG[1] = associatedBG1;
r21871r21872
6969      m_BG[7] = associatedBG7;
7070   }
7171
72   SDD1__PEM_ContextInfo m_contextInfo[32];
73   SDD1__BG* m_BG[8];
72   SDD1_PEM_ContextInfo m_contextInfo[32];
73   SDD1_BG* m_BG[8];
7474
7575   void PEM_prepareDecomp();
7676   UINT8 PEM_getBit(UINT8 *ROM, UINT32 *mmc, UINT8 context);
7777} ;
7878
7979
80class SDD1__CM
80class SDD1_CM
8181{
8282public:
83   SDD1__CM(SDD1__PEM* associatedPEM)
83   SDD1_CM(SDD1_PEM* associatedPEM)
8484   : m_PEM(associatedPEM) { }
8585
8686   UINT8 m_bitplanesInfo;
r21871r21872
8888   UINT8 m_bit_number;
8989   UINT8 m_currBitplane;
9090   UINT16 m_prevBitplaneBits[8];
91   SDD1__PEM* m_PEM;
91   SDD1_PEM* m_PEM;
9292
9393   void CM_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte);
9494   UINT8 CM_getBit(UINT8 *ROM, UINT32 *mmc);
9595} ;
9696
9797
98class SDD1__OL
98class SDD1_OL
9999{
100100public:
101   SDD1__OL(SDD1__CM* associatedCM)
101   SDD1_OL(SDD1_CM* associatedCM)
102102   : m_CM(associatedCM) { }
103103
104104   UINT8 m_bitplanesInfo;
105105   UINT16 m_length;
106106   UINT8* m_buffer;
107   SDD1__CM* m_CM;
107   SDD1_CM* m_CM;
108108
109109   void OL_prepareDecomp(UINT8 *ROM, UINT32 *mmc, UINT32 first_byte, UINT16 out_len, UINT8 *out_buf);
110110   void OL_launch(UINT8 *ROM, UINT32 *mmc);
111111} ;
112112
113class SDD1__emu
113class SDD1_emu
114114{
115115public:
116   SDD1__emu(running_machine &machine);
116   SDD1_emu(running_machine &machine);
117117
118118   running_machine &machine() const { return m_machine; }
119119
120   SDD1__IM* m_IM;
121   SDD1__GCD* m_GCD;
122   SDD1__BG* m_BG0;   SDD1__BG* m_BG1;   SDD1__BG* m_BG2;   SDD1__BG* m_BG3;
123   SDD1__BG* m_BG4;   SDD1__BG* m_BG5;   SDD1__BG* m_BG6;   SDD1__BG* m_BG7;
124   SDD1__PEM* m_PEM;
125   SDD1__CM* m_CM;
126   SDD1__OL* m_OL;
120   SDD1_IM* m_IM;
121   SDD1_GCD* m_GCD;
122   SDD1_BG* m_BG0;   SDD1_BG* m_BG1;   SDD1_BG* m_BG2;   SDD1_BG* m_BG3;
123   SDD1_BG* m_BG4;   SDD1_BG* m_BG5;   SDD1_BG* m_BG6;   SDD1_BG* m_BG7;
124   SDD1_PEM* m_PEM;
125   SDD1_CM* m_CM;
126   SDD1_OL* m_OL;
127127
128128   void SDD1emu_decompress(UINT8 *ROM, UINT32 *mmc, UINT32 in_buf, UINT16 out_len, UINT8 *out_buf);
129129
r21871r21872
168168      UINT16 size;    // $43x5-$43x6 -- DMA transfer size
169169   } m_dma[8];
170170
171   SDD1__emu* m_sdd1emu;
171   SDD1_emu* m_sdd1emu;
172172
173173   struct
174174   {

Previous 199869 Revisions Next


© 1997-2024 The MAME Team